Megosztás a következőn keresztül:


SQLProcedureColumns függvény

megfelelőségi
Bevezetett verzió: ODBC 1.0 szabványmegfelelőség: ODBC

összefoglaló
SQLProcedureColumns a bemeneti és kimeneti paraméterek listáját, valamint azokat az oszlopokat adja vissza, amelyek a megadott eljárások eredményhalmazát alkotják. Az illesztőprogram a megadott utasításban beállított eredményként adja vissza az adatokat.

Szintaxis

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

Érvek

StatementHandle
[Bemenet] Utasításkezelő.

CatalogName
[Bemenet] Eljáráskatalógus neve. Ha egy illesztő bizonyos eljárásokhoz támogatja a katalógusokat, mások számára azonban nem, például amikor az illesztőprogram adatokat kér le a különböző ADATBÁZIS-kezelőkből, egy üres sztring ("") azokat az eljárásokat jelöli, amelyek nem rendelkeznek katalógusokkal. CatalogName nem tartalmazhat sztringkeresési mintát.

Ha a SQL_ATTR_METADATA_ID utasítás attribútuma SQL_TRUE van beállítva, CatalogName azonosítóként lesz kezelve, és esete nem jelentős. Ha SQL_FALSE, CatalogName egy szokásos argumentum; szó szerint kezelik, és esete jelentős. További információ: Catalog Functionsargumentumai.

NameLength1
[Bemenet] *CatalogNamekaraktereinek hossza.

SchemaName
[Bemenet] Sztringkeresési minta az eljárássémanevekhez. Ha egy illesztőprogram bizonyos eljárások sémáit támogatja, mások esetében azonban nem, például amikor az illesztőprogram adatokat kér le a különböző DBMS-ekből, egy üres sztring ("") azokat az eljárásokat jelöli, amelyek nem rendelkeznek sémákkal.

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

NameLength2
[Bemenet] *SchemaNamekaraktereinek hossza.

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

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

NameLength3
[Bemenet] *ProcNamekaraktereinek hossza.

ColumnName
[Bemenet] Oszlopnevek sztringkeresési mintája.

Ha a SQL_ATTR_METADATA_ID utasítás attribútum értéke SQL_TRUE, ColumnName azonosítóként lesz kezelve, és esete nem jelentős. Ha SQL_FALSE, ColumnName egy mintaérték argumentum; szó szerint kezelik, és esete jelentős.

NameLength4
[Bemenet] *ColumnNamekaraktereinek hossza.

Visszatér

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnosztika

Amikor SQLProcedureColumns SQL_ERROR vagy SQL_SUCCESS_WITH_INFO ad vissza, a társított SQLSTATE-érték az SQLGetDiagRec meghívásával SQL_HANDLE_STMT HandleType és StatementHandle. Az alábbi táblázat felsorolja a SQLProcedureColumns által gyakran visszaadott SQLSTATE-értékeket, és ismerteti azokat a függvény kontextusában; a(z) "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATES-ek leírását. 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 Hiba Leírás
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 kurzor meg volt nyitva a StatementHandle, és SQLFetch vagy SQLFetchScroll lett meghívva. Ezt a hibát akkor adja vissza az illesztőprogram-kezelő, ha SQLFetch vagy SQLFetchScroll nem adott vissza SQL_NO_DATA, és az illesztőprogram akkor adja vissza, ha SQLFetch vagy SQLFetchScroll SQL_NO_DATA.

A kurzor meg volt nyitva a StatementHandle, de SQLFetch vagy SQLFetchScroll nem lett 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 SQLError á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. A függvény meghívása megtörtént, és a végrehajtás befejezése előtt SQLCancel vagy SQLCancelHandle a StatementHandle. Ezután a függvényt ismét meghívta a StatementHandle.

A függvény meghívása megtörtént, és a végrehajtás befejezése előtt SQLCancel vagy SQLCancelHandle a StatementHandle egy másik szálról egy többszálas alkalmazásból.
HY009 Érvénytelen null mutató használata A SQL_ATTR_METADATA_ID utasítás attribútum értéke SQL_TRUE, a CatalogName argumentum null értékű, az SQL_CATALOG_NAME InfoType pedig azt adja vissza, hogy a katalógusnevek támogatottak.

(DM) A SQL_ATTR_METADATA_ID utasítás attribútum értéke SQL_TRUE, és a SchemaName, ProcNamevagy ColumnName argumentum null mutató volt.
HY010 Függvényütemezési hiba (DM) A rendszer aszinkron módon végrehajtó függvényt hívott meg a StatementHandletársított kapcsolati leíróhoz. Ez az aszinkron függvény továbbra is végrehajtódott az SQLProcedureColumns függvény meghívásakor.

(DM) SQLExecute, SQLExecDirectvagy SQLMoreResults meghívást kapott a StatementHandle, és visszaadta SQL_PARAM_DATA_AVAILABLE. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.

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

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsvagy SQLSetPos meghívást kapott az StatementHandle, és visszaadta 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.
HY090 Érvénytelen sztring vagy puffer hossza (DM) A névhossz argumentumok egyikének értéke kisebb, mint 0, de nem egyenlő SQL_NTS.

A névhossz argumentumok egyikének értéke túllépte a megfelelő katalógus, séma, eljárás vagy oszlopné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) További információ a felfüggesztett állapotról: SQLEndTran függvény.
HYC00 A választható funkció nem implementálva Meg lett adva egy eljáráskatalógus, és az illesztőprogram vagy az adatforrás nem támogatja a katalógusokat.

Meg lett adva egy eljárásséma, és az illesztőprogram vagy az adatforrás nem támogatja a sémákat.

Sztringkeresési minta lett megadva az eljárássémához, az eljárás nevéhez vagy az oszlop nevéhez, és az adatforrás nem támogatja az argumentumok közül egy vagy több keresési mintáját.

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 Az időtúllépési időszak lejárt, mielőtt az adatforrás visszaadta az eredményhalmazt. Az időtúllépési időszak SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 A kapcsolat időtúllépése 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 SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A StatementHandle illesztőprogramja nem támogatja a függvényt.
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 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, SQLCompleteAsync kell meghívni a leíróra a művelet utófeldolgozásához és befejezéséhez.

Megjegyzések

Ezt a függvényt általában az utasítás végrehajtása előtt használják az eljárásparaméterekre és az eljárás által visszaadott eredményhalmazt alkotó oszlopokra vonatkozó információk lekérésére, ha vannak ilyenek. További információ: Eljárások.

Jegyzet

SQLProcedureColumns nem feltétlenül adja vissza az eljárás által használt összes oszlopot. Előfordulhat például, hogy egy illesztő csak az eljárás által használt paraméterekkel kapcsolatos információkat adja vissza, és nem az általa létrehozott eredményhalmaz oszlopait.

A SchemaName, ProcNameés ColumnName argumentumok keresési mintákat fogadnak el. Az érvényes keresési mintákról további információt Mintaérték argumentumokcímű témakörben talál.

Jegyzet

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

SQLProcedureColumns a PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME és COLUMN_TYPE által rendezett standard eredményhalmazként adja vissza az eredményeket. Az egyes eljárások oszlopnevei a következő sorrendben jelennek meg: a visszatérési érték neve, az eljáráshívásban szereplő egyes paraméterek nevei (hívási sorrendben), majd az eljárás által visszaadott eredményhalmaz egyes oszlopainak nevei (oszlopsorrendben).

Az alkalmazásoknak az eredményhalmaz végéhez viszonyítva kell összekapcsolni az illesztőprogram-specifikus oszlopokat. További információ: Catalog Functionsáltal visszaadott adatok.

A PROCEDURE_CAT, PROCEDURE_SCHEM, PROCEDURE_NAME és COLUMN_NAME oszlopok tényleges hosszának meghatározásához az alkalmazás meghívhatja SQLGetInfo a SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_PROCEDURE_NAME_LEN és SQL_MAX_COLUMN_NAME_LEN beállításokkal.

A következő oszlopok át lettek nevezve ODBC 3-ra.x. Az oszlopnévváltozások nem befolyásolják a visszamenőleges kompatibilitást, mert az alkalmazások oszlopszám alapján kötnek.

ODBC 2.0 oszlop ODBC 3.x oszlop
PROCEDURE_QUALIFIER PROCEDURE_CAT
ELJÁRÁS _OWNER PROCEDURE_SCHEM
PRECIZITÁS COLUMN_SIZE
HOSSZÚSÁG BUFFER_LENGTH
HANGSOR DECIMAL_DIGITS
RADIX NUM_PREC_RADIX

A következő oszlopok lettek hozzáadva a SQLProcedureColumns által az ODBC 3-hoz visszaadott eredményhalmazhoz.x:

  • COLUMN_DEF

  • DATETIME_CODE

  • CHAR_OCTET_LENGTH

  • ORDINAL_POSITION

  • IS_NULLABLE

Az alábbi táblázat az eredményhalmaz oszlopait sorolja fel. A 19. oszlopon (IS_NULLABLE) túl további oszlopokat is definiálhat az illesztő. Az alkalmazásnak hozzáférést kell szereznie az illesztőprogram-specifikus oszlopokhoz úgy, hogy az eredményhalmaz végéről számol, nem pedig explicit sorszámot ad meg. További információ: Catalog Functionsáltal visszaadott adatok.

Oszlop neve Oszlopszám Adattípus Megjegyzések
PROCEDURE_CAT (ODBC 2.0) 1 Varchar Eljáráskatalógus neve; NULL érték, ha az adatforrásra nem alkalmazható. Ha egy illesztőprogram bizonyos eljárásokhoz támogatja a katalógusokat, mások esetében azonban nem, például amikor az illesztőprogram adatokat kér le a különböző ADATBÁZIS-kezelőkből, akkor üres sztringet ("") ad vissza azokhoz az eljárásokhoz, amelyek nem rendelkeznek katalógusokkal.
PROCEDURE_SCHEM (ODBC 2.0) 2 Varchar Eljárásséma neve; NULL érték, ha az adatforrásra nem alkalmazható. Ha az illesztőprogram bizonyos eljárások sémáit támogatja, mások esetében azonban nem, például amikor az illesztőprogram adatokat kér le a különböző DBMS-ekből, az üres sztringet ("") ad vissza azokhoz az eljárásokhoz, amelyek nem rendelkeznek sémákkal.
PROCEDURE_NAME (ODBC 2.0) 3 Varchar not NULL Eljárás neve. Egy üres sztringet ad vissza egy olyan eljáráshoz, amely nem rendelkezik névvel.
COLUMN_NAME (ODBC 2.0) 4 Varchar not NULL Eljárásoszlop neve. Az illesztő egy üres sztringet ad vissza egy olyan eljárásoszlophoz, amely nem rendelkezik névvel.
COLUMN_TYPE (ODBC 2.0) 5 Smallint not NULL Az eljárás oszlopát paraméterként vagy eredményhalmaz-oszlopként határozza meg:

SQL_PARAM_TYPE_UNKNOWN: Az eljárásoszlop olyan paraméter, amelynek típusa ismeretlen. (ODBC 1.0)

SQL_PARAM_INPUT: Az eljárásoszlop egy bemeneti paraméter. (ODBC 1.0)

SQL_PARAM_INPUT_OUTPUT: Az eljárásoszlop egy bemeneti/kimeneti paraméter. (ODBC 1.0)

SQL_PARAM_OUTPUT: Az eljárásoszlop egy kimeneti paraméter. (ODBC 2.0)

SQL_RETURN_VALUE: Az eljárás oszlopa az eljárás visszatérési értéke. (ODBC 2.0)

SQL_RESULT_COL: Az eljárás oszlop egy eredményhalmaz oszlop. (ODBC 1.0)
DATA_TYPE (ODBC 2.0) 6 Smallint not NULL SQL-adattípus. Ez lehet ODBC SQL-adattípus vagy illesztőprogram-specifikus SQL-adattípus. Dátum- és időköz típusú adattípusok esetén ez az oszlop a tömör adattípusokat adja vissza (például SQL_TYPE_TIME vagy SQL_INTERVAL_YEAR_TO_MONTH). Az érvényes ODBC SQL-adattípusok listájáért lásd SQL-adattípusok A D függelék adattípusai című részét. Az illesztőprogram-specifikus SQL-adattípusokkal kapcsolatos információkért tekintse meg az illesztőprogram dokumentációját.
TYPE_NAME (ODBC 2.0) 7 Varchar not NULL Adatforrástól függő adattípus neve; például: "CHAR", "VARCHAR", "MONEY", "LONG VARBINARY", vagy "CHAR ( ) FOR BIT DATA".
COLUMN_SIZE (ODBC 2.0) 8 Egész szám Az adatforrás eljárásoszlopának oszlopmérete. NULL értéket ad vissza olyan adattípusokhoz, amelyeknél az oszlopméret nem alkalmazható. A pontosságra vonatkozó további információkért lásd oszlopméretet, tizedesjegyeket, az oktett hosszának átvitelét és a megjelenítési méret a D függelék adattípusai című szakaszában.
BUFFER_LENGTH (ODBC 2.0) 9 Egész szám A SQLGetData vagy SQLFetch műveleten átvitt adatok bájtban megadott hossza, ha SQL_C_DEFAULT van megadva. Numerikus adatok esetén ez a méret eltérhet az adatforrásban tárolt adatok méretétől. További információ: oszlopméret, tizedesjegyek, átviteli oktetthossz és megjelenítési méret, a D függelék adattípusai című szakaszában.
DECIMAL_DIGITS (ODBC 2.0) 10 Kis méretű Az adatforrás eljárásoszlopának tizedesjegyei. NULL értéket ad vissza olyan adattípusokhoz, amelyeknél a tizedesjegyek nem alkalmazhatók. A tizedesjegyekkel kapcsolatos további információkért lásd oszlopméretet, tizedesjegyeket, átviteli oktett hosszát és megjelenítési méretét, a D függelék adattípusai című szakaszában.
NUM_PREC_RADIX (ODBC 2.0) 11 Kis méretű Numerikus adattípusok esetén 10 vagy 2.

Ha 10, akkor a COLUMN_SIZE és DECIMAL_DIGITS értéke adja meg az oszlopban engedélyezett tizedesjegyek számát. A TIZEDES(12,5) oszlop például 10-NUM_PREC_RADIX, 12-COLUMN_SIZE és 5-ös DECIMAL_DIGITS ad vissza; A FLOAT oszlop 10-NUM_PREC_RADIX, 15-ös COLUMN_SIZE és NULL DECIMAL_DIGITS adhat vissza.

Ha 2, akkor a COLUMN_SIZE és DECIMAL_DIGITS értékei adják meg az oszlopban engedélyezett bitek számát. A FLOAT oszlop például 2-NUM_PREC_RADIX, 53-COLUMN_SIZE és NULL DECIMAL_DIGITS adhat vissza.

NULL értéket ad vissza az olyan adattípusokhoz, amelyeknél a NUM_PREC_RADIX nem alkalmazható.
NULL ÉRTÉKŰ (ODBC 2.0) 12 Smallint not NULL Azt jelzi, hogy az eljárás oszlopa null értéket fogad-e el:

SQL_NO_NULLS: Az eljárásoszlop nem fogad el NULL értékeket.

SQL_NULLABLE: Az eljárás oszlopa NULL értékeket fogad el.

SQL_NULLABLE_UNKNOWN: Nem ismert, hogy az eljárás oszlopa null értékeket fogad-e el.
MEGJEGYZÉSEK (ODBC 2.0) 13 Varchar Az eljárás oszlopának leírása.
COLUMN_DEF (ODBC 3.0) 14 Varchar Az oszlop alapértelmezett értéke.

Ha a NULL az alapértelmezett érték, akkor ez az oszlop a NULL szó, nem idézőjelek közé zárva. Ha az alapértelmezett érték csonkolás nélkül nem jeleníthető meg, akkor ez az oszlop A CSONKOLT értéket tartalmazza, egyetlen idézőjel nélkül. Ha nincs megadva alapértelmezett érték, akkor ez az oszlop NULL értékű.

A COLUMN_DEF értéke használható egy új oszlopdefiníció létrehozásához, kivéve, ha a TRUNCATED értéket tartalmazza.
SQL_DATA_TYPE (ODBC 3.0) 15 Smallint not NULL Az SQL-adattípus értéke a leíró SQL_DESC_TYPE mezőjében jelenik meg. Ez az oszlop megegyezik a DATA_TYPE oszlopmal, kivéve a dátum- és intervallumadattípusokat.

Dátum- és időköz típusú adattípusok esetén az eredményhalmaz SQL_DATA_TYPE mezője SQL_INTERVAL vagy SQL_DATETIME, a SQL_DATETIME_SUB mező pedig az adott intervallum vagy dátum/idő adattípus alkódját adja vissza. (Lásd D függelék: Adattípusok.)
SQL_DATETIME_SUB (ODBC 3.0) 16 Kis méretű A datetime és intervallum típusú adattípusok altípuskódja. Más adattípusok esetén ez az oszlop null értéket ad vissza.
CHAR_OCTET_LENGTH (ODBC 3.0) 17 Egész szám Egy karakter vagy bináris adattípus oszlop bájtjainak maximális hossza. Az összes többi adattípus esetében ez az oszlop null értéket ad vissza.
ORDINAL_POSITION (ODBC 3.0) 18 Egész szám nem NULL Bemeneti és kimeneti paraméterek esetén a paraméter sorszáma az eljárásdefinícióban (a paraméter sorrendjének növelésével, 1-től kezdődően). Visszatérési érték esetén (ha van ilyen), a függvény 0 értéket ad vissza. Az eredményhalmaz oszlopainak sorszáma az eredményhalmazban, az eredményhalmaz első oszlopa pedig az 1- es szám. Ha több eredményhalmaz is van, az oszloprendi pozíciókat a rendszer illesztőprogram-specifikus módon adja vissza.
IS_NULLABLE (ODBC 3.0) 19 Varchar "NEM", ha az oszlop nem tartalmaz NULL-eket.

"IGEN", ha az oszlop tartalmazhat NULL-eket.

Ez az oszlop nulla hosszúságú sztringet ad vissza, ha a nullitás ismeretlen.

Az ISO-szabályokat követve állapítja meg a nullitást. Az ISO SQL-kompatibilis DBMS nem tud üres sztringet visszaadni.

Az oszlop visszaadott értéke eltér a NULL ÉRTÉKŰ oszlophoz visszaadott értéktől. (Lásd a NULLABLE oszlop leírását.)

Példa kódra

Lásd: eljáráshívások.

További információ: Lát
Puffer kötése egy eredményhalmaz oszlopához SQLBindCol függvény
Utasításfeldolgozás megszakítása SQLCancel-függvény
Egyetlen sor vagy adatblokk beolvasása csak továbbítási irányban SQLFetch-függvény
Adatblokk beolvasása vagy egy eredményhalmaz görgetése SQLFetchScroll függvény
Az adatforrásban lévő eljárások listájának visszaadása SQLProcedures függvény

Lásd még:

ODBC API-referencia
ODBC-fejlécfájlok