Funkce SQLProcedures

Soulad
Zavedená verze: ODBC 1.0 Soulad standardů: ODBC

Shrnutí
SQLProcedures vrací seznam názvů procedur uložených v konkrétním datovém zdroji. Procedura je obecný termín používaný k popisu spustitelného objektu nebo pojmenované entity, kterou lze vyvolat pomocí vstupních a výstupních parametrů. Pro více informací o postupech viz Postupy.

Syntax

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

Arguments

StatementHandle
[Vstup] Popisovač příkazu

CatalogName
[Vstup] Katalog postupů. Pokud ovladač podporuje katalogy pro některé tabulky, ale ne pro jiné, například když ovladač získává data z různých DBMS, prázdný řetězec ("") označuje tabulky, které katalogy nemají. CatalogName nemůže obsahovat vzor vyhledávání řetězců.

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

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

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

Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, SchemaName je považován za identifikátor a jeho případ není významný. Pokud je to SQL_FALSE, SchemaName je argument hodnoty vzoru; Je brána doslovně a její případ je významný.

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

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

Pokud je atribut SQL_ATTR_METADATA_ID příkazu nastaven na SQL_TRUE, ProcName je považován za identifikátor a jeho případ není významný. Pokud je SQL_FALSE, ProcName je argument hodnoty vzoru; Je brána doslovně a její případ je významný.

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

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR nebo SQL_INVALID_HANDLE.

Diagnostics

Když SQLProcedures vrátí SQL_ERROR nebo SQL_SUCCESS_WITH_INFO, lze získat přidruženou hodnotu SQLstate, pokud se vyvolá SQLGetDiagRec s HandleType SQL_HANDLE_STMT a HandleStatementHandle. Následující tabulka uvádí hodnoty SQLSTATE, které SQLProcedures běžně vrací, a vysvětluje každou z nich v kontextu této funkce; notace "(DM)" předchází popisům SQLstavů vráceným Správcem ovladačů. Návratový kód přidružený ke každé hodnotě SQLSTATE je SQL_ERROR, pokud není uvedeno jinak.

SQLSTATE Error Description
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 Na StatementHandle byl otevřený kurzor a byly volány SQLFetch nebo SQLFetchScroll . 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.

Na StatementHandle byl otevřený kurzor, ale SQLFetch nebo SQLFetchScroll nebyly volány.
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á nástrojem SQLGetDiagRec v vyrovnávací paměti *MessageText 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 SQLCancel nebo SQLCancelHandle pro PříkazHandle. Pak byla funkce znovu volána v StatementHandle.

Funkce byla volána a před dokončením provádění byla volána funkce SQLCancel neboSQLCancelHandlez jiného vlákna v aplikaci s více vlákny.
HY009 Neplatné použití ukazatele null Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUE, argument CatalogName byl nulový ukazatel a SQL_CATALOG_NAME InfoType vrací, že jsou podporována jména katalogů.

(DM) Atribut SQL_ATTR_METADATA_ID příkazu byl nastaven na SQL_TRUE a argument SchemaName nebo ProcName byl nulovým ukazatelem.
HY010 Chyba posloupnosti funkcí (DM) Byla volána asynchronně spuštěná funkce pro popisovač připojení, který je přidružen k StatementHandle. Tato asynchronní funkce byla stále vykonávána, když byla volána.

(DM) SQLExecute, SQLExecDirect nebo 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 PříkazHandle byla volána asynchronně spuštěná funkce (ne tato) a při zavolání této funkce se stále spouštěla.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations nebo SQLSetPos byly volány pro StatementHandle a vráceny SQL_NEED_DATA. Tato funkce byla volána před odesláním dat pro všechny parametry provádění dat nebo sloupce.
HY013 Chyba správy paměti Volání funkce nelze zpracovat, protože základní objekty paměti nelze získat přístup, pravděpodobně kvůli nedostatku paměti.
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 nebyla rovna SQL_NTS.

Hodnota jednoho z argumentů délky názvu překročila maximální hodnotu délky odpovídajícího názvu.
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 specifikován katalog procedur a ovladač nebo zdroj dat katalogy nepodporuje.

Bylo specifikováno schéma procedur, ale ovladač nebo zdroj dat schémata nepodporuje.

Pro schéma procedury nebo název procedury byl specifikován vzor vyhledávání řetězců 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. Vypršení časového limitu dotazu vypršelo, než zdroj dat vrátil požadovanou 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. Časový limit připojení je nastavený prostřednictvím sqlSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Ovladač tuto funkci nepodporuje. (DM) Ovladač spojený s StatementHandle tuto 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 K dokončení předchozí asynchronní operace na tomto popisovači nebyla volána funkce SQLCompleteAsync. Pokud předchozí volání funkce na popisovači vrátí SQL_STILL_EXECUTING a pokud je povolen režim oznámení, musí být sqlCompleteAsync volán na popisovači, aby bylo možné provést následné zpracování a dokončit operaci.

Comments

SQLProcedures uvádí všechny postupy v požadovaném rozsahu. Uživatel může, ale nemusí mít oprávnění k provádění kterékoliv z těchto procedur. Pro kontrolu přístupnosti může aplikace zavolat SQLGetInfo a zkontrolovat hodnotu SQL_ACCESSIBLE_PROCEDURES informace. Jinak musí aplikace zvládnout situaci, kdy uživatel vybere proceduru, kterou nemůže spustit. Informace o tom, jak lze tyto informace použít, naleznete v sekci Postupy.

Poznámka:

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

SQLProcedures vrací výsledky jako standardní množinu výsledků, seřazenou podle PROCEDURE_CAT, PROCEDURE_SCHEMA a PROCEDURE_NAME.

Poznámka:

SQLProcedures nemusí vrátit všechny procedury. Aplikace mohou použít jakýkoli platný postup, bez ohledu na to, zda je vrácen SQLProcedures.

Následující sloupce byly přejmenovány pro ODBC 3*.x*. Změny názvů sloupců neovlivňují zpětnou kompatibilitu, protože aplikace se vážou podle čísla sloupce.

Sloupec ODBC 2.0 ODBC 3*.x* sloupec
PROCEDURA_KVALIFIKÁTOR Kategorie_procedur
PROCEDURE _OWNER PROCEDURE _SCHEM

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

Následující tabulka uvádí sloupce v sadě výsledků. Další sloupce za sloupcem 8 (PROCEDURE_TYPE) může ovladač definovat. Aplikace by měla získat přístup ke sloupcům specifickým pro ovladač odpočítáváním od konce výsledné množiny místo explicitního určení ordinální pozice. Další informace naleznete v tématu Data vrácená funkcemi katalogu.

Název sloupce Číslo sloupce Datový typ Comments
PROCEDURE_CAT (ODBC 2.0) 1 Varchar identifikátor katalogu postupů; NULL, pokud není relevantní pro datový zdroj. Pokud ovladač podporuje katalogy pro některé procedury, ale ne pro jiné, například když ovladač získává data z různých DBMS, vrátí prázdný řetězec ("") pro ty procedury, které katalogy nemají.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Identifikátor schématu procedur; NULL, pokud není relevantní pro datový zdroj. Pokud ovladač podporuje schémata pro některé procedury, ale ne pro jiné, například když ovladač získává data z různých DBMS, vrátí prázdný řetězec ("") pro ty procedury, které schémata nemají.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar, ne NULL Identifikátor postupu.
NUM_INPUT_PARAMS (ODBC 2.0) 4 N/A Vyhrazeno pro budoucí použití. Aplikace by se neměly spoléhat na data vrácená v těchto sloupcích výsledků.
NUM_OUTPUT_PARAMS (ODBC 2.0) 5 N/A Vyhrazeno pro budoucí použití. Aplikace by se neměly spoléhat na data vrácená v těchto sloupcích výsledků.
NUM_RESULT_SETS (ODBC 2.0) 6 N/A Vyhrazeno pro budoucí použití. Aplikace by se neměly spoléhat na data vrácená v těchto sloupcích výsledků.
POZNÁMKY (ODBC 2.0) 7 Varchar Popis zákroku.
PROCEDURE_TYPE (ODBC 2.0) 8 Smallint Definuje typ procedury:

SQL_PT_UNKNOWN: Nelze určit, zda procedura vrací hodnotu.

SQL_PT_PROCEDURE: Vrácený objekt je procedura; to znamená, že nemá návratovou hodnotu.

SQL_PT_FUNCTION: Vrácený objekt je funkce; to znamená, že má návratnost.

Argumenty SchemaName a ProcName přijímají vyhledávací vzory. Pro více informací o platných vyhledávacích vzorcích viz Argumenty hodnoty vzoru.

Příklad kódu

Viz Procedurální hovory.

Informace o Podívejte se
Vytvoření vazby vyrovnávací paměti ke sloupci v sadě výsledků SQLBindCol – funkce
Zrušení zpracování příkazů SQLCancel – funkce
Načítání jednoho řádku nebo bloku dat pouze ve směru dopředu Funkce SQLFetch
Načtení bloku dat nebo procházení sady výsledků SQLFetchScroll – funkce
Vrácení informací o ovladači nebo datovém zdroji Funkce SQLGetInfo
Vrácení sloupců parametrů a výsledků procedury SQLProcedureColumns Function
Syntax pro volání uložených procedur Provádění příkazů

Viz také

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