Sdílet prostřednictvím


FUNKCE SQLProcedureColumns

shoda
Zavedená verze: Dodržování standardů ODBC 1.0: ODBC

souhrnu
SQLProcedureColumns vrátí seznam vstupních a výstupních parametrů a také sloupce, které tvoří sadu výsledků pro zadané procedury. Ovladač vrátí informace jako výsledek nastavený na zadaný příkaz.

Syntax

  
SQLRETURN SQLProcedureColumns(  
     SQLHSTMT      StatementHandle,  
     SQLCHAR *     CatalogName,  
     SQLSMALLINT   NameLength1,  
     SQLCHAR *     SchemaName,  
     SQLSMALLINT   NameLength2,  
     SQLCHAR *     ProcName,  
     SQLSMALLINT   NameLength3,  
     SQLCHAR *     ColumnName,  
     SQLSMALLINT   NameLength4);  

Argumenty

StatementHandle
[Vstup] Popisovač příkazu

CatalogName
[Vstup] Název katalogu procedur Pokud ovladač podporuje katalogy pro některé postupy, ale ne pro jiné, například když ovladač načte data z různých dbMS, prázdný řetězec ("") označuje tyto procedury, které nemají katalogy. CatalogName nemůže obsahovat vzor hledání řetězců.

Pokud je atribut příkazu SQL_ATTR_METADATA_ID nastaven na SQL_TRUE, CatalogName je považován za identifikátor a jeho případ není významný. Pokud je SQL_FALSE, CatalogName je běžný argument; je léčen doslova a jeho případ je významný. Další informace naleznete v tématu Argumenty v katalogu funkce.

NameLength1
[Vstup] Délka znaků *CatalogName.

SchemaName
[Vstup] Vzor vyhledávání řetězců pro názvy schématu procedury Pokud ovladač podporuje schémata pro některé procedury, ale ne pro jiné, například když ovladač načte data z různých dbMS, prázdný řetězec ("") označuje tyto procedury, které nemají schémata.

Pokud je atribut příkazu SQL_ATTR_METADATA_ID nastaven na SQL_TRUE, SchemaName je považován za identifikátor a jeho případ není významný. Pokud je SQL_FALSE, SchemaName je argument hodnoty vzoru; je léčen doslova a jeho případ je významný.

NameLength2
[Vstup] Délka znaků *SchemaName.

ProcName
[Vstup] Vzor hledání řetězců pro názvy procedur.

Pokud je atribut příkazu SQL_ATTR_METADATA_ID nastaven na SQL_TRUE, název_ je považován za identifikátor a jeho případ není významný. Pokud je SQL_FALSE, název_názvu_ je argumentem hodnoty vzoru; je léčen doslova a jeho případ je významný.

NameLength3
[Vstup] Délka znaků *ProcName.

název sloupce
[Vstup] Vzor hledání řetězců pro názvy sloupců

Pokud je atribut příkazu SQL_ATTR_METADATA_ID nastaven na SQL_TRUE, ColumnName se považuje za identifikátor a jeho případ není významný. Pokud je SQL_FALSE, název sloupce je argument hodnoty vzoru; je léčen doslova a jeho případ je významný.

NameLength4
[Vstup] Délka znaků *ColumnName.

Návraty

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR nebo SQL_INVALID_HANDLE.

Diagnostika

Když SQLProcedureColumns vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze přidruženou hodnotu SQLSTATE získat voláním SQLGetDiagRec s HandleType SQL_HANDLE_STMT a popisovačStatementHandle . Následující tabulka uvádí hodnoty SQLSTATE běžně vrácené SQLProcedureColumns a vysvětluje každý z nich v kontextu této funkce; notace "(DM)" předchází popisy funkcí SQLSTATEs vrácených správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.

SQLSTATE Chyba Popis
01000 Obecné upozornění Informační zpráva specifická pro řidiče (Funkce vrátí SQL_SUCCESS_WITH_INFO.)
08S01 Selhání komunikačního propojení Komunikační propojení mezi ovladačem a zdrojem dat, ke kterému byl ovladač připojen, selhalo před dokončením zpracování funkce.
24000 Neplatný stav kurzoru Kurzor byl otevřen na StatementHandlea SQLFetch nebo SQLFetchScroll byl volána. Tato chyba je vrácena Správcem ovladačů, pokud SQLFetch nebo SQLFetchScroll nevrátil SQL_NO_DATA a ovladač je vrácen, pokud SQLFetch nebo SQLFetchScroll vrátil SQL_NO_DATA.

Kurzor byl otevřen naStatementHandle , ale SQLFetch nebo SQLFetchScroll nebyl volána.
40001 Selhání serializace Transakce byla vrácena zpět kvůli vzájemnému zablokování prostředku s jinou transakcí.
40003 Neznámé dokončování příkazů Přidružené připojení se nezdařilo během provádění této funkce a stav transakce nelze určit.
HY000 Obecná chyba Došlo k chybě, pro kterou nebyla definována žádná specifická funkce SQLSTATE a pro kterou nebyla definována žádná implementace sqlSTATE. Chybová zpráva vrácená SQLError v *MessageText vyrovnávací paměti popisuje chybu a její příčinu.
HY001 Chyba přidělení paměti Ovladač nemohl přidělit paměť potřebnou k podpoře provádění nebo dokončení funkce.
HY008 Operace byla zrušena. Asynchronní zpracování bylo povoleno pro StatementHandle. Funkce byla volána a před dokončením provádění byla volána SQLCancel nebo SQLCancelHandle byla volána naStatementHandle . Pak byla funkce znovu volána na StatementHandle.

Funkce byla volána a před dokončením provádění SQLCancel nebo SQLCancelHandle byla volána na StatementHandle z jiného vlákna v aplikaci s více vlákny.
HY009 Neplatné použití ukazatele null Atribut příkazu SQL_ATTR_METADATA_ID byl nastaven na SQL_TRUE, argument CatalogName byl nulový ukazatel a SQL_CATALOG_NAME InfoType vrátí podporované názvy katalogu.

(DM) Atribut příkazu SQL_ATTR_METADATA_ID byl nastaven na SQL_TRUE a SchemaName, ProcNamenebo ColumnName argument byl nulový ukazatel.
HY010 Chyba posloupnosti funkcí (DM) Byla volána asynchronně spouštěná funkce pro popisovač připojení, který je přidružen k StatementHandle. Tato asynchronní funkce se stále spouštěla, když byla volána funkce SQLProcedureColumns.

(DM) sqlExecute, SQLExecDirectnebo SQLMoreResults byl volána pro StatementHandle a vrácena SQL_PARAM_DATA_AVAILABLE. Tato funkce byla volána před načtením dat pro všechny streamované parametry.

(DM) Pro StatementHandle byla volána asynchronně spouštěná funkce (ne tato) a při zavolání této funkce se stále spouštěla.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsnebo SQLSetPos byl volána pro StatementHandle a vrácena SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce.
HY090 Neplatná délka řetězce nebo vyrovnávací paměti (DM) Hodnota jednoho z argumentů délky názvu byla menší než 0, ale nerovná se SQL_NTS.

Hodnota jednoho z argumentů délky názvu překročila maximální hodnotu délky odpovídajícího katalogu, schématu, procedury nebo názvu sloupce.
HY117 Připojení je pozastaveno kvůli neznámému stavu transakce. Jsou povoleny pouze funkce pro odpojení a jen pro čtení. (DM) Další informace o pozastaveném stavu naleznete v tématu FUNKCE SQLEndTran.
HYC00 Nepovinná funkce není implementována. Byl zadán katalog procedur a ovladač nebo zdroj dat nepodporuje katalogy.

Bylo zadáno schéma procedury a ovladač nebo zdroj dat nepodporují schémata.

Pro schéma procedury, název procedury nebo název sloupce byl zadán vzor hledání řetězce a zdroj dat nepodporuje vyhledávací vzory pro jeden nebo více těchto argumentů.

Ovladač ani zdroj dat nepodporuje kombinaci aktuálních nastavení atributů SQL_ATTR_CONCURRENCY a SQL_ATTR_CURSOR_TYPE příkazu.

Atribut příkazu SQL_ATTR_USE_BOOKMARKS byl nastaven na SQL_UB_VARIABLE a atribut příkazu SQL_ATTR_CURSOR_TYPE byl nastaven na typ kurzoru, pro který ovladač nepodporuje záložky.
HYT00 Vypršel časový limit. Platnost časového limitu vypršela, než zdroj dat vrátil sadu výsledků. Časový limit je nastavený prostřednictvím sqlSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Vypršel časový limit připojení Platnost časového limitu připojení vypršela, než zdroj dat odpověděl na žádost. Doba časového limitu připojení je nastavena prostřednictvím SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Ovladač tuto funkci nepodporuje. (DM) Ovladač přidružený k StatementHandle funkci nepodporuje.
IM017 Dotazování je zakázané v asynchronním režimu oznámení. Při každém použití modelu oznámení je dotazování zakázané.
IM018 sqlCompleteAsync nebyl volán k dokončení předchozí asynchronní operace na tomto popisovači. Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolený režim oznámení, SQLCompleteAsync musí být volána v popisovači, aby bylo možné provést následné zpracování a dokončit operaci.

Komentáře

Tato funkce se obvykle používá před provedením příkazu k načtení informací o parametrech procedury a sloupcích, které tvoří sadu výsledků nebo sady vrácené procedurou, pokud existuje. Další informace naleznete v tématu Procedury.

Poznámka

SQLProcedureColumns nemusí vrátit všechny sloupce používané postupem. Ovladač může například vracet pouze informace o parametrech používaných procedurou, nikoli o sloupcích v sadě výsledků, kterou generuje.

Argumenty SchemaName, ProcNamea ColumnName argumenty přijímají vzorce hledání. Další informace o platných vzorech hledání naleznete v tématu Argumenty hodnoty vzoru.

Poznámka

Další informace o obecném použití, argumentech a vrácených datech funkcí katalogu ODBC naleznete v tématu Funkce katalogu.

SQLProcedureColumns vrátí výsledky jako standardní sadu výsledků seřazenou podle PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME a COLUMN_TYPE. Názvy sloupců se vrátí pro každou proceduru v následujícím pořadí: název návratové hodnoty, názvy jednotlivých parametrů ve volání procedury (v pořadí volání) a potom názvy jednotlivých sloupců ve výsledné sadě vrácené procedurou (v pořadí sloupců).

Aplikace by měly svázat sloupce specifické pro ovladače vzhledem ke konci sady výsledků. Další informace naleznete v tématu data vrácená funkcemi katalogu.

K určení skutečných délek PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME a COLUMN_NAME sloupců může aplikace volat SQLGetInfo s možnostmi SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_PROCEDURE_NAME_LEN a SQL_MAX_COLUMN_NAME_LEN.

Následující sloupce byly přejmenovány pro ROZHRANÍ ODBC 3.x. Změny názvu sloupce nemají vliv na zpětnou kompatibilitu, protože aplikace jsou svázané podle čísla sloupce.

Sloupec ODBC 2.0 ODBC 3. sloupecx
PROCEDURE_QUALIFIER PROCEDURE_CAT
_OWNER POSTUPU PROCEDURE_SCHEM
PŘESNOST COLUMN_SIZE
DÉLKA BUFFER_LENGTH
ŠKÁLA DECIMAL_DIGITS
ZÁKLAD NUM_PREC_RADIX

Následující sloupce byly přidány do sady výsledků vrácené SQLProcedureColumns pro ODBC 3.x:

  • COLUMN_DEF

  • DATETIME_CODE

  • CHAR_OCTET_LENGTH

  • ORDINAL_POSITION

  • IS_NULLABLE

Následující tabulka uvádí sloupce v sadě výsledků. Další sloupce nad sloupcem 19 (IS_NULLABLE) mohou být definovány ovladačem. Aplikace by měla získat přístup ke sloupcům specifickým pro ovladače tím, že odpočítává od konce sady výsledků místo určení explicitní řadové pozice. Další informace naleznete v tématu data vrácená funkcemi katalogu.

Název sloupce Číslo sloupce Datový typ Komentáře
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Název katalogu procedur; Pokud se na zdroj dat nevztahuje hodnota NULL. Pokud ovladač podporuje katalogy pro některé procedury, ale ne pro jiné, například když ovladač načte data z různých dbMS, vrátí prázdný řetězec ("") pro tyto procedury, které nemají katalogy.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Název schématu procedury; Pokud se na zdroj dat nevztahuje hodnota NULL. Pokud ovladač podporuje schémata pro některé procedury, ale ne pro jiné, například když ovladač načte data z různých dbMSs, vrátí prázdný řetězec ("") pro tyto procedury, které nemají schémata.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar není NULL Název procedury Prázdný řetězec se vrátí pro proceduru, která nemá název.
COLUMN_NAME (ODBC 2.0) 4 Varchar není NULL Název sloupce procedury Ovladač vrátí prázdný řetězec pro sloupec procedury, který nemá název.
COLUMN_TYPE (ODBC 2.0) 5 Smallint not NULL Definuje sloupec procedury jako parametr nebo sloupec sady výsledků:

SQL_PARAM_TYPE_UNKNOWN: Sloupec procedury je parametr, jehož typ je neznámý. (ODBC 1.0)

SQL_PARAM_INPUT: Sloupec procedury je vstupní parametr. (ODBC 1.0)

SQL_PARAM_INPUT_OUTPUT: Sloupec procedury je vstupní/výstupní parametr. (ODBC 1.0)

SQL_PARAM_OUTPUT: Sloupec procedury je výstupní parametr. (ODBC 2.0)

SQL_RETURN_VALUE: Sloupec procedury je návratová hodnota procedury. (ODBC 2.0)

SQL_RESULT_COL: Sloupec procedury je sloupec sady výsledků. (ODBC 1.0)
DATA_TYPE (ODBC 2.0) 6 Smallint not NULL Datový typ SQL Může se jednat o datový typ ODBC SQL nebo datový typ SQL specifický pro ovladač. Pro datové typy datetime a interval vrátí tento sloupec stručné datové typy (například SQL_TYPE_TIME nebo SQL_INTERVAL_YEAR_TO_MONTH). Seznam platných datových typů ODBC SQL najdete v tématu datových typů SQL v dodatku D: Datové typy. Informace o datových typech SQL specifických pro ovladače najdete v dokumentaci ovladače.
TYPE_NAME (ODBC 2.0) 7 Varchar není NULL Název datového typu závislý na zdroji dat; Například "CHAR", "VARCHAR", "MONEY", "LONG VARBINARY" nebo "CHAR ( ) FOR BIT DATA".
COLUMN_SIZE (ODBC 2.0) 8 Celé číslo Velikost sloupce procedury ve zdroji dat. Hodnota NULL se vrátí pro datové typy, u kterých není použitelná velikost sloupce. Další informace o přesnosti najdete v tématu Velikost sloupce, desetinné číslice, přenos délky oktů a velikost zobrazení v dodatku D: Datové typy.
BUFFER_LENGTH (ODBC 2.0) 9 Celé číslo Délka bajtů dat přenášených v SQLGetData nebo operace SQLFetch, pokud je zadána SQL_C_DEFAULT. U číselných dat se tato velikost může lišit od velikosti dat uložených ve zdroji dat. Další informace naleznete v tématu Velikost sloupce, Desetinné číslice, Přenést délku octetu a velikost zobrazení, v dodatku D: Datové typy.
DECIMAL_DIGITS (ODBC 2.0) 10 Smallint Desetinná číslice sloupce procedury ve zdroji dat. Hodnota NULL je vrácena pro datové typy, kde desetinné číslice nelze použít. Další informace o desetinných číslicích naleznete v tématu Velikost sloupce, Desetinná číslice, Přenést délku octetu a Velikost zobrazení, v dodatku D: Datové typy.
NUM_PREC_RADIX (ODBC 2.0) 11 Smallint Pro číselné datové typy 10 nebo 2.

Pokud 10, hodnoty v COLUMN_SIZE a DECIMAL_DIGITS udávají počet desetinných číslic povolených pro sloupec. Například sloupec DECIMAL(12;5) by vrátil NUM_PREC_RADIX 10, COLUMN_SIZE 12 a DECIMAL_DIGITS 5; Sloupec FLOAT by mohl vrátit NUM_PREC_RADIX 10, COLUMN_SIZE 15 a DECIMAL_DIGITS null.

Pokud 2, hodnoty v COLUMN_SIZE a DECIMAL_DIGITS udávají počet bitů povolených ve sloupci. Například sloupec FLOAT může vrátit NUM_PREC_RADIX 2, COLUMN_SIZE 53 a DECIMAL_DIGITS null.

Hodnota NULL se vrátí pro datové typy, kde NUM_PREC_RADIX nelze použít.
NULLABLE (ODBC 2.0) 12 Smallint not NULL Určuje, jestli sloupec procedury přijímá hodnotu NULL:

SQL_NO_NULLS: Sloupec procedury nepřijímá hodnoty NULL.

SQL_NULLABLE: Sloupec procedury přijímá hodnoty NULL.

SQL_NULLABLE_UNKNOWN: Není známo, jestli sloupec procedury přijímá hodnoty NULL.
POZNÁMKY (ODBC 2.0) 13 Varchar Popis sloupce procedury.
COLUMN_DEF (ODBC 3.0) 14 Varchar Výchozí hodnota sloupce.

Pokud byla hodnota NULL zadána jako výchozí hodnota, jedná se o slovo NULL, které není uzavřeno v uvozovkách. Pokud výchozí hodnotu nelze reprezentovat bez zkrácení, obsahuje tento sloupec zkrácený, bez uzavřených jednoduchých uvozovek. Pokud nebyla zadána žádná výchozí hodnota, má tento sloupec hodnotu NULL.

Hodnotu COLUMN_DEF lze použít při generování nové definice sloupce, s výjimkou případů, kdy obsahuje hodnotu TRUNCATED.
SQL_DATA_TYPE (ODBC 3.0) 15 Smallint not NULL Hodnota datového typu SQL, která se zobrazí v poli SQL_DESC_TYPE popisovače. Tento sloupec je stejný jako sloupec DATA_TYPE s výjimkou datových typů data a času a intervalu.

U datových typů data a intervalu vrátí pole SQL_DATA_TYPE v sadě výsledků SQL_INTERVAL nebo SQL_DATETIME a pole SQL_DATETIME_SUB vrátí podkód pro konkrétní datový typ intervalu nebo data a času. (Viz Příloha D: Datové typy.)
SQL_DATETIME_SUB (ODBC 3.0) 16 Smallint Kód podtypu pro datové typy datetime a interval. U jiných datových typů vrátí tento sloupec hodnotu NULL.
CHAR_OCTET_LENGTH (ODBC 3.0) 17 Celé číslo Maximální délka ve sloupci znaku nebo binárního datového typu Pro všechny ostatní datové typy vrátí tento sloupec hodnotu NULL.
ORDINAL_POSITION (ODBC 3.0) 18 Celé číslo není NULL U vstupních a výstupních parametrů je pořadové umístění parametru v definici procedury (ve zvýšení pořadí parametrů počínaje číslem 1). Pro návratovou hodnotu (pokud existuje) je vrácena hodnota 0. Pro sloupce sady výsledků je pořadové umístění sloupce v sadě výsledků s prvním sloupcem v sadě výsledků číslo 1. Pokud existuje více sad výsledků, vrátí se pořadí sloupců určitým způsobem.
IS_NULLABLE (ODBC 3.0) 19 Varchar "NE", pokud sloupec neobsahuje seznamy NUL.

Ano, pokud sloupec může obsahovat hodnoty NUL.

Tento sloupec vrátí řetězec nulové délky, pokud je neznámá možnost null.

Pravidla ISO se řídí určením nulové hodnoty. Systém DBMS kompatibilní se standardem ISO SQL nemůže vrátit prázdný řetězec.

Hodnota vrácená pro tento sloupec se liší od hodnoty vrácené pro sloupec NULLABLE. (Viz popis sloupce NULLABLE.)

Příklad kódu

Viz volání procedur.

Informace o Vidět
Vytvoření vazby vyrovnávací paměti ke sloupci v sadě výsledků funkce SQLBindCol
Zrušení zpracování příkazů funkce SQLCancel
Načtení jednoho řádku nebo bloku dat ve směru jen dopředu funkce SQLFetch
Načtení bloku dat nebo procházení sady výsledků funkce SQLFetchScroll
Vrácení seznamu procedur ve zdroji dat funkce SQLProcedures

Viz také

Referenční rozhraní ODBC API
soubory hlaviček ODBC