SQLProcedures függvény

Megfelelőség
Bemutatott verzió: ODBC 1.0 Szabványoknak megfelelés: ODBC

Összefoglalás
Az SQLProcedures visszaadja a konkrét adatforrásban tárolt eljárásnevek listáját. Az eljárás egy általános kifejezés, amelyet egy futtatható objektum vagy egy elnevezett entitás leírására használnak, amelyet bemeneti és kimeneti paraméterek segítségével lehet megidézni. További információkért a beavatkozásokról lásd a Eljárásokat.

Syntax

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

Arguments

StatementHandle
[Bemenet] Utasításkezelő.

CatalogName
[Bemenet] Eljáráskatalógus. Ha egy illesztőprogram bizonyos táblákhoz katalógusokat támogat, másoknál nem, például amikor az illesztőprogram adatokat tölt be különböző adatbázisokból, akkor egy üres string ("") jelzi azokat a táblákat, amelyeknek nincs katalógus. A CatalogName nem tartalmazhat stringkereső mintát.

Ha a SQL_ATTR_METADATA_ID utasítás attribútuma SQL_TRUE-re van beállítva, a CatalogName azonosítóként kezelik, és az esete nem jelentős. Ha SQL_FALSE, akkor a CatalogName egy átlagos érv; szó szerint kezelik, és az esete jelentős. További információ: A Catalog Functions argumentumai.

NameLength1
[Bemenet] A *CatalogName karakterek hossza.

Séma neve
[Bemenet] Stringkereső minta eljárássémák nevekhez. Ha egy illezser egyes eljárásokhoz támogatja a sémákat, míg másoknál nem, például amikor az illesztőprogram adatokat tölt be különböző adatbázisokból, akkor egy üres string ("") jelzi azokat az eljárásokat, amelyeknek nincs sémája.

Ha a SQL_ATTR_METADATA_ID állítás attribútuma SQL_TRUE-re van beállítva, akkor a SchemaName azonosítóként kezelik, és az esete nem jelentős. Ha SQL_FALSE, akkor a SchemaName mintaérték-argumentum; szó szerint kezelik, és az esete jelentős.

NameLength2
[Bemenet] Hossz a *SchemaName.

ProcName
[Bemenet] Stringkeresési minta eljárásnevekhez.

Ha a SQL_ATTR_METADATA_ID állítás attribútuma SQL_TRUE-re van beállítva, a ProcName-et azonosítóként kezelik, és az eve nem jelentős. Ha SQL_FALSE, akkor a ProcName egy mintaérték-argumentum; szó szerint kezelik, és az esete jelentős.

NameLength3
[Bemenet] Hosszúság a *ProcName.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLProcedures SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE érték elérhető SQLGetDiagRec hívásával, amely egy SQL_HANDLE_STMT HandleType és egy HandleType of StatementHandle (HandleType) segítségével érhető el. Az alábbi táblázat felsorolja az SQLProcedures által gyakran visszaadott SQLSTATE értékeket, és mindegyiket ezen függvény kontextusában magyarázza meg; a "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATE-leírásokat. Az egyes SQLSTATE-értékekhez társított visszatérési kód SQL_ERROR, kivéve, ha másként van feltüntetve.

SQLSTATE Error Description
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
08S01 Kommunikációs kapcsolat hibája Az illesztőprogram és az adatforrás közötti kommunikációs kapcsolat, amelyhez az illesztőprogram csatlakoztatva volt, nem sikerült, mielőtt a függvény befejeződött a feldolgozás.
24000 Érvénytelen kurzorállapot A StatementHandle kurzora nyitva volt, és az SQLFetch vagy SQLFetchScroll hívást kapta. Ezt a hibát az illesztőprogram-kezelő adja vissza, ha az SQLFetch vagy az SQLFetchScroll nem adott vissza SQL_NO_DATA, és ha az SQLFetch vagy az SQLFetchScroll visszaadta SQL_NO_DATA.

A kurzor nyitva volt a StatementHandle-en, de az SQLFetch vagy SQLFetchScroll nem volt meghívva.
40001 Szerializálási hiba A tranzakció egy erőforrás holtpontja miatt lett visszaállítva egy másik tranzakcióval.
40003 Az utasítás befejezése ismeretlen A társított kapcsolat a függvény végrehajtása során meghiúsult, és a tranzakció állapota nem határozható meg.
HY000 Általános hiba Hiba történt, amely miatt nem volt konkrét SQLSTATE, és amelyhez nem definiáltak implementációspecifikus SQLSTATE-t. Az SQLGetDiagRec által a *MessageText pufferben visszaadott hibaüzenet leírja a hibát és annak okát.
HY001 Memóriafoglalási hiba Az illesztőprogram nem tudta lefoglalni a függvény végrehajtásának vagy befejezésének támogatásához szükséges memóriát.
HY008 Művelet megszakítva Az aszinkron feldolgozás engedélyezve lett a StatementHandle-ben. A függvény meghívása megtörtént, és a végrehajtás befejezése előtt az SQLCancel vagy az SQLCancelHandle meghívása megtörtént az Utasításkezelőben. Ezután a függvény ismét meghívásra került az Utasításkezelőben.

A függvény meghívása megtörtént, és a végrehajtás befejezése előtt az SQLCancel vagy az SQLCancelHandle egy másik szálról lett meghívva a StatementHandle-ra egy többszálas alkalmazásból.
HY009 Érvénytelen null mutató használata A SQL_ATTR_METADATA_ID utasítás attribútumot SQL_TRUE-re állították, a CatalogName argument null mutató volt, és az SQL_CATALOG_NAME InfoType azt mutatja, hogy a katalógusnevek támogatottak.

(DM) A SQL_ATTR_METADATA_ID állítás attribútuma SQL_TRUE-re volt beállítva, és a SchemaName vagy ProcName érve null mutató volt.
HY010 Függvényütemezési hiba (DM) A StatementHandle-hez társított kapcsolati leíróhoz aszinkron módon végrehajtó függvény lett meghívva. Ez az aszinkron függvény még mindig futott, amikor ezt a függvényt hívták.

(DM) SQLExecute, SQLExecDirect vagy SQLMoreResults lett meghívva az Utasításkezelőhöz , és SQL_PARAM_DATA_AVAILABLE ad vissza. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.

(DM) Egy aszinkron módon végrehajtó függvény (nem ez) lett meghívva az StatementHandle-hez , és a függvény meghívásakor továbbra is végrehajtó volt.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations vagy SQLSetPos lett meghívva az Utasításkezelőhöz , és SQL_NEED_DATA. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg.
HY013 Memóriakezelési hiba A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, esetleg a memóriahiány miatt.
HY090 Érvénytelen sztring vagy puffer hossza (DM) Az egyik névhossz érv értéke kevesebb volt, mint 0, de nem egyenlő SQL_NTS.

A névhossz argumentumok egyikének értéke túllépte a megfelelő név maximális hosszértékét.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál.
HYC00 A választható funkció nem implementálva Eljáráskatalógust határoztak meg, és az illesztőprogram vagy adatforrás nem támogatja a katalógusokat.

Eljárássémát definiáltak, és az illesztőprogram vagy adatforrás nem támogatja a sémákat.

A folyamatséma vagy eljárásnév számára egy stringkereső mintát is megadtak, és az adatforrás nem támogatja az egyik vagy több argumentum keresési mintázatait.

Az illesztőprogram vagy az adatforrás nem támogatja a SQL_ATTR_CONCURRENCY és SQL_ATTR_CURSOR_TYPE utasításattribútumok aktuális beállításainak kombinációját.

A SQL_ATTR_USE_BOOKMARKS utasítás attribútuma SQL_UB_VARIABLE lett beállítva, és a SQL_ATTR_CURSOR_TYPE utasítás attribútum olyan kurzortípusra lett beállítva, amelyhez az illesztőprogram nem támogatja a könyvjelzőket.
HYT00 Az időtúllépés lejárt A lekérdezés időtúllépési időtartama lejárt, mielőtt az adatforrás visszaadta a kért eredményhalmazt. Az időtúllépési időszak az SQLSetStmtAttr SQL_ATTR_QUERY_TIMEOUT keresztül van beállítva.
HYT01 A kapcsolati időkorlát lejárt A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka az SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT keresztül van beállítva.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A StatementHandle hozzátartozó illesztőprogram nem támogatja ezt a funkciót.
IM017 A lekérdezés aszinkron értesítési módban le van tiltva Az értesítési modell használata esetén a lekérdezés le van tiltva.
IM018 Az SQLCompleteAsync nem lett meghívva az előző aszinkron művelet végrehajtásához ezen a leírón. Ha a leíró előző függvényhívása SQL_STILL_EXECUTING ad vissza, és ha az értesítési mód engedélyezve van, az SQLCompleteAsync-et a leírón kell meghívni a művelet utófeldolgozásához és befejezéséhez.

Comments

Az SQLProcedures felsorolja az összes eljárást a kért tartományban. A felhasználónak lehet engedélye bármelyik eljárás végrehajtására, vagy nem. Az elérhetőség ellenőrzéséhez egy alkalmazás hívhatja az SQLGetInfo-t , és ellenőrizheti a SQL_ACCESSIBLE_PROCEDURES információértéket. Ellenkező esetben az alkalmazásnak képesnek kell lennie olyan helyzetet kezelni, amikor a felhasználó olyan eljárást választ, amelyet nem tud végrehajtani. Arról, hogyan használhatók ezekről az információkról, lásd : Eljárások.

Note

Az ODBC-katalógusfüggvények általános használatáról, argumentumairól és visszaadott adatairól további információt a Catalog Functions című témakörben talál.

Az SQLProcedures az eredményeket szabványos eredményhalmazként adja vissza, PROCEDURE_CAT, PROCEDURE_SCHEMA és PROCEDURE_NAME sorrendben.

Note

Az SQLProcedures nem feltétlenül adja vissza az összes eljárást. Az alkalmazások bármilyen érvényes eljárást használhatnak, függetlenül attól, hogy az SQLProcedures visszaadja-e azt.

A következő oszlopokat átnevezték az ODBC 3*.x* alapján. Az oszlopnév változása nem befolyásolja a visszafelé kompatibilitást, mivel az alkalmazások oszlopszám alapján kötnek hozzá.

ODBC 2.0 oszlop ODBC 3*.x* oszlop
Eljárás minősítő Eljáráskategória
PROCEDURE _OWNER PROCEDURE _SCHEM

A PROCEDURE_CAT, PROCEDURE_SCHEM és PROCEDURE_NAME oszlopok tényleges hosszának meghatározásához egy alkalmazás hívhatja az SQLGetInfo-t a SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN és SQL_MAX_PROCEDURE_NAME_LEN opciókkal.

Az alábbi táblázat az eredményhalmaz oszlopait sorolja fel. További oszlopokat a 8. oszlop (PROCEDURE_TYPE) után a meghajtó definiálhat. Az alkalmazásnak az illesztőgép-specifikus oszlopokhoz úgy kell hozzáférnie, hogy az eredményhalmaz végétől visszaszámol, nem pedig explicit ordinalpozíciót jelölne meg. További információ: Catalog Functions által visszaadott adatok.

Oszlop neve Oszlopszám Adattípus Comments
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Eljáráskatalógus azonosító; NULL, ha nem vonatkozik az adatforrásra. Ha egy illezser egyes eljárásokhoz támogatja a katalógusokat, míg másoknál nem, például amikor az illesztőprogram adatokat tölt be különböző adatbázisokból, akkor üres stringet ("") ad vissza azokra az eljárásokra, amelyeknek nincs katalógus.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Eljárásséma azonosító; NULL, ha nem vonatkozik az adatforrásra. Ha egy illesztőprogram támogatja a sémákat bizonyos eljárásokhoz, míg másokhoz nem, például amikor az illesztőprogram adatokat tölt be különböző adatbázisokból, akkor üres stringet ("") ad vissza azokra az eljárásokra, amelyeknek nincs sémája.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar nem NULL Eljárásazonosító.
NUM_INPUT_PARAMS (ODBC 2.0) 4 N/A Jövőbeli használatra fenntartva. Az alkalmazásoknak nem szabad az eredményoszlopokban visszaadott adatokra támaszkodniuk.
NUM_OUTPUT_PARAMS (ODBC 2.0) 5 N/A Jövőbeli használatra fenntartva. Az alkalmazásoknak nem szabad az eredményoszlopokban visszaadott adatokra támaszkodniuk.
NUM_RESULT_SETS (ODBC 2.0) 6 N/A Jövőbeli használatra fenntartva. Az alkalmazásoknak nem szabad az eredményoszlopokban visszaadott adatokra támaszkodniuk.
MEGJEGYZÉSEK (ODBC 2.0) 7 Varchar Az eljárás leírása.
PROCEDURE_TYPE (ODBC 2.0) 8 Smallint Definiálja az eljárás típusát:

SQL_PT_UNKNOWN: Nem lehet meghatározni, hogy az eljárás értéket ad-e vissza.

SQL_PT_PROCEDURE: A visszaküldött tárgy egy eljárás; vagyis nincs hozamértéke.

SQL_PT_FUNCTION: A visszaküldött objektum egy függvény; vagyis van hozamértéke.

A SchemaName és a ProcName érvek elfogadják a keresési mintákat. További információért az érvényes keresési mintákról lásd: Mintaérték-érvek.

Kódpélda

Lásd a beavatkozási hívásokat.

Információ erről: Nézze
Puffer kötése egy eredményhalmaz oszlopához SQLBindCol függvény
Utasításfeldolgozás megszakítása SQLCancel függvény
Egy sor vagy adatblokk előrelépési irányban történő lekérése SQLFetch függvény
Adatblokk beolvasása vagy egy eredményhalmaz görgetése SQLFetchScroll függvény
Információ visszaküldése egy driverről vagy adatforrásról SQLGetInfo Function
A paraméterek és az eredményhalmaz oszlopainak visszaadása egy eljárásban SQLProcedureColumns Function
Szintaxis tárolt eljárások megidézéséhez Végrehajtási utasítások

Lásd még

ODBC API-referencia
ODBC-fejlécfájlok