Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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.
Související funkce
| 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ů |