Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
| 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 |
| 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.
Kapcsolódó függvények
| 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