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ég
Bevezetett verzió: ODBC 1.0 szabványmegfelelőség: ISO 92
Summary
Az SQLDescribeCol az eredmény leírását – oszlop neve, típust, oszlopméretet, tizedes számjegyeket és nullabilitást – adja vissza az eredményhalmaz egyetlen oszlopához. Ez az információ az IRD területén is elérhető.
Syntax
SQLRETURN SQLDescribeCol(
SQLHSTMT StatementHandle,
SQLUSMALLINT ColumnNumber,
SQLCHAR * ColumnName,
SQLSMALLINT BufferLength,
SQLSMALLINT * NameLengthPtr,
SQLSMALLINT * DataTypePtr,
SQLULEN * ColumnSizePtr,
SQLSMALLINT * DecimalDigitsPtr,
SQLSMALLINT * NullablePtr);
Arguments
StatementHandle
[Bemenet] Utasításkezelő.
Oszlopszám
[Bemenet] Az eredményadatok oszlopszáma, sorrendben, növekvő oszlopsorrendben, 1-től kezdve.
A ColumnNumber érve 0-ra is beállítható, hogy leírja a könyvjelzőoszlopot.
Oszlopnév
[Kimenet] Mutató egy null-véges pufferre, amelyben vissza lehet adni az oszlop nevét. Ezt az értéket az IRD SQL_DESC_NAME mezőjéből olvassuk. Ha az oszlop névtelen, vagy az oszlop neve nem határozható meg, az illesztőprogram üres stringet ad vissza.
Ha a ColumnName NULL, a NameLengthPtr továbbra is visszaadja a ColumnName által mutatott pufferben elérhető összes karakterszámot (kivéve a null-terminációs karaktert a karakteradatokhoz).
BufferLength
[Bemenet] A *ColumnName puffer hossza, karakterekben.
NameLengthPtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni a *ColumnName formátumban elérhető összes karakter számát (a null terminációt kivéve). Ha a visszatérhető karakterek száma nagyobb, mint a BufferLength, akkor a *ColumnName oszlopnevet lerövidítik BufferLength-re mínusz egy null-terminációs karakter hosszára.
DataTypePtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni az oszlop SQL adattípusát. Ezt az értéket az IRD SQL_DESC_CONCISE_TYPE mezőjéből olvassuk. Ez az SQL Data Types értékek egyike, vagy egy driver-specifikus SQL adattípus. Ha az adattípus nem határozható meg, az illesztővezető SQL_UNKNOWN_TYPE visszaad.
Az ODBC 3-ban. x, SQL_TYPE_DATE, SQL_TYPE_TIME vagy SQL_TYPE_TIMESTAMP a *DataTypePtr formátumban jelenik meg dátum, idő vagy időbélyeg adatokhoz; az ODBC 2-ben. x, SQL_DATE, SQL_TIME vagy SQL_TIMESTAMP visszaadják. A Driver Manager elvégzi a szükséges leképezéseket, amikor ODBC 2. x alkalmazás ODBC 3-mal működik. x driver vagy ODBC 3. x alkalmazás ODBC 2-vel működik. X driver.
Ha az ColumnNumber 0-val egyenlő (egy könyvjelzőoszlopnál), akkor a * DataTypePtr változatos hosszúságú könyvjelzők esetén SQL_BINARY jelenik meg. (SQL_INTEGER akkor jelenik meg, ha egy ODBC 3 könyvjelzőt használ. x alkalmazás ODBC 2-vel dolgozik. x driver vagy ODBC 2 alapján. x alkalmazás ODBC 3-mal dolgozik. x driver.)
További információért ezekről az adattípusokról lásd az SQL Data Types a D mellékletben: Adattípusok. Az illesztőprogram-specifikus SQL-adattípusokkal kapcsolatos információkért tekintse meg az illesztőprogram dokumentációját.
ColumnSizePtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni az oszlop méretét (karakterekben) az adatforráson. Ha az oszlopméret nem határozható meg, az illesztőprogram 0-t ad vissza. További információért az oszlopméretről lásd: Oszlopméret, tizedes számjegyek, átviteli oktet hossz és megjelenítés mérete a D. mellékletben: Adattípusok.
DecimalDigitsPtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni az adatforrás oszlopának tizedes számjegyeinek számát. Ha a tizedes számjegyek száma nem határozható meg vagy nem alkalmazható, a meghajtó 0-t ad vissza. További információért a tizedes számjegyekről lásd: Oszlopméret, tizedes számjegyek, átviteli oktet hossz és megjelenítés mérete a D. mellékletben: Adattípusok.
NullablePtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni egy értéket, amely jelzi, hogy az oszlop engedélyezi-e a NULL értékeket. Ezt az értéket az IRD SQL_DESC_NULLABLE mezőjéből olvassuk. Az érték a következők egyike:
SQL_NO_NULLS: Az oszlop nem engedélyezi a NULL értékeket.
SQL_NULLABLE: Az oszlop NULL értékeket engedélyez.
SQL_NULLABLE_UNKNOWN: Az illesztőprogram nem tudja meghatározni, hogy az oszlop engedélyezi-e a NULL értékeket.
Returns
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR vagy SQL_INVALID_HANDLE.
Diagnostics
Amikor SQLDescribeCol SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad, egy hozzárendelt SQLSTATE érték elérhető SQLGetDiagRec hívásával, amely egy SQL_HANDLE_STMT HandleType és egy HandleType of StatementHandle (Handle) segítségével érhető el. Az alábbi táblázat felsorolja az SQLDescribeCol által gyakran visszaadott SQLSTATE értékeket, és mindegyiket ennek a függvénynek a kontextusában magyarázza; 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 | Hiba | Description |
|---|---|---|
| 01000 | Általános figyelmeztetés | Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01004 | Sztringadatok, jobb csonkolt | A *ColumnName puffer nem volt elég nagy ahhoz, hogy az egész oszlopnevet visszaadja, így az oszlop nevét lerövidítették. A csonkítatlan oszlopnév hosszát a *NameLengthPtr. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 07005 | Előkészített kijelentés, nem kurzor-specifikáció | A StatementHandle hozzátartozó utasítás nem adott vissza eredményhalmazt. Nem voltak oszlopok, amiket leírhattak volna. |
| 07009 | Érvénytelen descriptor index | (DM) Az argumentus ColumnNumber értéke 0-val egyenlő volt, az SQL_ATTR_USE_BOOKMARKS állítás opció pedig SQL_UB_OFF. Az argumentum ColumnNumber értéke nagyobb volt, mint az eredményhalmaz oszlopainak száma. |
| 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. |
| 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ória elallokáció hibája | 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 | A műveletet megszakították | 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. |
| 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 akkor futott, amikor az SQLDescribeCol hívást kaptuk. (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) A függvényt az SQLPrepare, SQLExecute vagy egy katalógus függvény hívása előtt hívták meg az utasítás fogantyúján. (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) A BufferLength argumentumhoz megadott érték kisebb, mint 0. |
| 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. |
| 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) Az StatementHandle-hez társított illesztőprogram 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 | 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. |
Az SQLDescribeCol vissza tud adni bármilyen SQLSTATE-t, amelyet az SQLPrepare vagy SQLExecute vissza tud adni, ha az SQLPrepare után és az SQLExecute előtt hívják, attól függően, hogy az adatforrás mikor értékeli az utasításkezelőhöz tartozó SQL utasítást.
Teljesítmény miatt egy alkalmazásnak nem szabad SQLDescribeCol-t hívnia egy utasítás végrehajtása előtt.
Comments
Egy alkalmazás általában az SQLPrepare hívása után, majd az SQLExecute hívása előtt vagy után hívja az SQLDescribeCol-t. Egy alkalmazás az SQLDescribeCol-t is hívhatja az SQLExecDirect hívása után. További információ: Eredményhalmaz metaadatai.
Az SQLDescribeCol lekéri a SELECT utasítás által generált oszlop nevét, típusát és hosszát. Ha az oszlop kifejezés, akkor a *ColumnName vagy üres string, vagy driver-definiált név.
Note
Az ODBC támogatja SQL_NULLABLE_UNKNOWN-t kiterjesztésként, bár az Open Group és SQL Access Group Call Level Interface specifikációja nem határozza meg az SQLDescribeCol opcióját.
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| Puffer kötése egy eredményhalmaz oszlopához | SQLBindCol |
| Utasításfeldolgozás megszakítása | SQLCancel |
| Információ visszaküldése egy oszlopról az eredményhalmazban | SQLColAttribute |
| Több adatsor beolvasása | SQLFetch |
| Az eredményhalmaz oszlopainak számának visszaállítása | SQLNumResultCols |
| Utasítás előkészítése végrehajtáshoz | SQLPrepare |