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 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 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) (DM) Pro (DM) |
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.
Související funkce
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 |
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í
soubory hlaviček ODBC