SQLDescribeCol függvény

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.

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