SQLColumns függvény

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

Summary
Az SQLColumns a megadott táblázatokban található oszlopnevek listáját adja vissza. Az illesztőprogram ezt az információt a megadott StatementHandle eredményként adja vissza.

Syntax

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

Arguments

StatementHandle
[Bemenet] Utasításkezelő.

CatalogName
[Bemenet] Katalógus neve. Ha egy illezser egyes táblákhoz támogatja a katalógusokat, míg másoknál nem, például amikor az illezser adatokat különböző adatbázisokból tölt be, akkor egy üres string ("") jelzi azokat a táblákat, amelyeknek nincs katalógus. A CatalogName nem tartalmazhat stringkereső mintát.

Note

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 sémák nevekhez. Ha egy illesztőprogram támogatja a sémákat bizonyos táblákhoz, de másokhoz nem, például amikor az illesztőprogram adatokat kér különböző adatbázisokból, egy üres string ("") jelzi azokat a táblákat, amelyeknek nincs sémája.

Note

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.

TáblaNév
[Bemenet] Stringkereső minta táblanevekhez.

Note

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

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

Oszlopnév
[Bemenet] Láncsorkeresési mintázat oszlopnevekhez.

Note

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

NameLength4
[Bemenet] Hosszúság a *ColumnName.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_STILL_EXECUTING, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLColumns 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 (HandleType) segítségével érhető el. Az alábbi táblázat felsorolja az SQLColumnok által általában 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.)
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 StatementHandle kurzora nyitva volt, 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 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.
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) Az SQL_ATTR_METADATA_ID utasítás attribútumot SQL_TRUE-re állították, míg a SchemaName, TableName vagy ColumnName argument 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 akkor futott, amikor az SQLColumns 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.
Az egyik névhossz argumentum értéke meghaladta a megfelelő katalógus vagy név maximális hosszértékét. Minden katalógus vagy név maximális hossza az SQLGetInfo hívásával érhető el az InfoType értékekkel. (Lásd: "Hozzászólások.")
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 Megadtak egy katalógusnevet, és az illesztőprogram vagy adatforrás nem támogatja a katalógusokat.

Megadtak egy séma nevet, és az illesztőprogram vagy adatforrás nem támogatja a sémákat.

A séma nevéhez, táblanevéhez vagy oszlopnevéhez egy stringkereső mintát jelöltek, é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 Időtúllépés történt A lekérdezés időtúllépési időtartama lejárt, mielőtt az adatforrás visszaadta az 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) 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.

Comments

Ezt a funkciót általában az utasításvégrehajtás előtt használják, hogy adatokat gyűjtsenek egy tábla vagy táblák oszlopairól az adatforrás katalógusából. Az SQLColumns segítségével minden típusú elemhez visszaküldhető adatokat visszaszerezhet. Az alaptáblázatokon kívül ez magában foglalhat (de nem kizárólagosan) nézeteket, szinonimákat, rendszertáblázatokat és így tovább. Ezzel szemben az SQLColAttribute és SQLDescribeCol függvények leírják az eredményhalmaz oszlopait, míg az SQLNumResultCols függvény az eredményhalmaz oszlopainak számát adja vissza. További információ: A katalógusadatok felhasználása.

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 SQLColumns az eredményeket szabványos eredményhalmazként adja vissza, TABLE_CAT, TABLE_SCHEM, TABLE_NAME és ORDINAL_POSITION sorrendben.

Note

Amikor egy alkalmazás ODBC-vel működik 2. x driver, nem tér vissza ORDINAL_POSITION oszlop az eredményhalmazban. Ennek eredményeként, amikor az ODBC 2-vel dolgozunk. x illesztőszerek esetén az SQLColumns által visszaadott oszloplistában szereplő oszlopok sorrendje nem feltétlenül egyezik meg az oszlopok sorrendével, amikor az alkalmazás SELECT utasítást hajt végre az adott táblázat összes oszlopán.

Note

Az SQLColumns nem feltétlenül adja vissza az összes oszlopot. Például egy driver nem feltétlenül adja vissza az adatokat pszeudo-oszlopokról, mint például az Oracle ROWID. Az alkalmazások bármely érvényes oszlopot használhatnak, függetlenül attól, hogy az SQLColumns visszaadja azt.

Néhány oszlop, amelyet az SQLStatistics vissza tud adni, az SQLColumns nem tér vissza. Például az SQLColumns nem adja vissza az indexben megjelenő oszlopokat, amelyeket egy kifejezés vagy szűrő fölött hoztak létre, például SALARY + BENEFITS vagy DEPT = 0012.

A VARCHAR oszlopok hosszai nincsenek a táblázatban; a tényleges hosszok az adatforrástól függnek. A TABLE_CAT, TABLE_SCHEM, TABLE_NAME és COLUMN_NAME oszlopok tényleges hosszának meghatározásához az alkalmazás az SQLGetInfo-t hívhatja a SQL_MAX_CATALOG_NAME_LEN, SQL_MAX_SCHEMA_NAME_LEN, SQL_MAX_TABLE_NAME_LEN és SQL_MAX_COLUMN_NAME_LEN opciókkal.

Az alábbi oszlopokat ODBC 3-ra nevezték át. x. 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
TÁBLÁZAT_JELZŐ TABLE_CAT
TÁBLÁZAT_TULAJDONOS TABLE_SCHEM
PRECIZITÁS Oszlop_méret
HOSSZ Puffer_hossza
SKÁLA TIZEDESJEGYEK
RADIX NUM_PREC_RADIX

A következő oszlopokat hozzáadták az SQLColumns által ODBC 3-ra visszaadott eredményhalmazhoz. X:

Karakter bytes hosszúsága
COLUMN_DEF

IS_NULLABLE
SORSZÁMPOZÍCIÓ

SQL_ADAT_TÍPUS
SQL_DATETIME_SUB

Az alábbi táblázat az eredményhalmaz oszlopait sorolja fel. A 18. oszlop (IS_NULLABLE) mögötti további oszlopokat az illesztővezető definiálhatja. Az alkalmazásnak hozzáférést kell szereznie az illesztőprogram-specifikus oszlopokhoz úgy, hogy az eredményhalmaz végétől lefelé számlál, nem pedig explicit sorrendi pozíciót ad meg. További információ: Catalog Functions által visszaadott adatok.

Oszlop név Column

szám
Adattípus Comments
TABLE_CAT (ODBC 1.0) 1 Varchar Katalógus neve; NULL, ha nem vonatkozik az adatforrásra. Ha egy illezser egyes táblákhoz 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 a táblákra, amelyeknek nincs katalógus.
TABLE_SCHEM (ODBC 1.0) 2 Varchar Séma név; NULL, ha nem vonatkozik az adatforrásra. Ha egy illezser egyes táblákhoz támogatja a sémákat, míg másoknál nem, például amikor az illesztőprogram adatokat kér különböző adatbázisokból, akkor üres stringet ("") ad vissza azokra a táblákra, amelyeknek nincs sémájuk.
TABLE_NAME (ODBC 1.0) 3 Varchar nem NULL Tábla neve.
COLUMN_NAME (ODBC 1.0) 4 Varchar nem NULL Oszlop neve. Az illesztőprogram üres stringet ad vissza egy olyan oszlophoz, amelynek nincs neve.
DATA_TYPE (ODBC 1.0) 5 Smallint nem NULL SQL adattípus. Ez lehet ODBC SQL-adattípus vagy illesztőprogram-specifikus SQL-adattípus. Dátumidő- és intervallum-adattípusok esetén ez az oszlop a tömör adattípust adja vissza (például SQL_TYPE_DATE vagy SQL_INTERVAL_YEAR_TO_MONTH, nem pedig a rövidített adattípust, mint a SQL_DATETIME vagy SQL_INTERVAL). Az érvényes ODBC SQL adattípusok listájáért 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.

Az adattípusok az ODBC 3-ra visszatértek. x és ODBC 2. X alkalmazás eltérő lehet. További információ: Visszamenőleges kompatibilitás és szabványmegfelelés.
TYPE_NAME (ODBC 1.0) 6 Varchar nem NULL Adatforrástól függő adattípus név; például "CHAR", "VARCHAR", "MONEY", "LONG VARBINAR" vagy "CHAR ( ) A BITADATOK ESETÉN".
COLUMN_SIZE (ODBC 1.0) 7 Egész szám Ha DATA_TYPE SQL_CHAR vagy SQL_VARCHAR, ez az oszlop tartalmazza az oszlop maximális hosszát karakterekben. Dátumidő-adattípusok esetén ez az összes karakterszám, amely szükséges az érték megjelenítéséhez, amikor az karakterekre konvertáljuk. Numerikus adattípusok esetén ez vagy az összes számjegy, vagy az oszlopban engedélyezett bitek teljes száma a NUM_PREC_RADIX oszlop szerint. Az intervallum adattípusok esetében ez a karakterek száma az intervallum literális karakterreprezentációjában (ahogy az intervallum vezető pontossága határozza meg, lásd a D melléklet Intervallum adattípus hossza : Adattípusok). További információért lásd: Oszlopméret, tizedes számjegyek, átviteli oktet hossz és megjelenítési méret a D mellékletben: Adattípusok.
BUFFER_LENGTH (ODBC 1.0) 8 Egész szám Az adat hossza bájtokban, amelyeket SQLGetData, SQLFetch vagy SQLFetchScroll műveleten továbbítanak, ha SQL_C_DEFAULT meg van jelölve. Numerikus adatok esetén ez a méret eltérhet az adatforráson tárolt adatok méretétől. Ez az érték eltérhet COLUMN_SIZE karakteradatok oszlopától. További információért a hosszról lásd: Oszlopméret, tizedesszámok, átviteli oktet hossz és megjelenítés mérete a D. mellékletben: Adattípusok.
DECIMAL_DIGITS (ODBC 1.0) 9 Smallint A tizedespont jobb oldalán lévő jelentős számjegyek összessége. SQL_TYPE_TIME és SQL_TYPE_TIMESTAMP esetén ez az oszlop tartalmazza a törtmásodperc komponensben szereplő számjegyek számát. A többi adattípus esetében ez az adatforrás oszlopának tizedes számjegyei. Az időkomponenst tartalmazó intervallum adattípusok esetén ez az oszlop tartalmazza a tizedespont jobbra lévő számjegyek számát (törtmásodperceket). Olyan intervallum adattípusok esetén, amelyek nem tartalmaznak időkomponenset, ez az oszlop 0. További információért a tizedes számjegyekről lásd: Oszlopméret, tizedesszámjegyek, átviteli oktet hossz és megjelenítési méret a D. mellékletben: Adattípusok. A NULL olyan adattípusok esetén jelenik meg, ahol DECIMAL_DIGITS nem alkalmazható.
NUM_PREC_RADIX (ODBC 1.0) 10 Smallint Numerikus adattípusok esetén 10 vagy 2. Ha 10, akkor a COLUMN_SIZE és DECIMAL_DIGITS értékei megadják az oszlophoz engedélyezett tizedes számjegyek 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 megadják az oszlopban engedélyezett bitszámot. Például egy FLOAT oszlop visszaadhat egy 2-es RADIX-ot, 53-as COLUMN_SIZE-t és egy DECIMAL_DIGITS-t a NULL-t.

NULL értéket ad vissza az olyan adattípusokhoz, amelyeknél a NUM_PREC_RADIX nem alkalmazható.
NULLABLE (ODBC 1.0) 11 Smallint nem NULL SQL_NO_NULLS ha az oszlop nem tartalmazhat NULL értékeket.

SQL_NULLABLE, ha az oszlop elfogadja a NULL értékeket.

SQL_NULLABLE_UNKNOWN ha nem ismert, hogy az oszlop elfogadja-e NULL értékeket.

Az adott oszlop által visszaadott érték eltér a IS_NULLABLE oszlop által visszaadott értéktől. A NULLABLE oszlop biztosan jelzi, hogy egy oszlop elfogadhatja a NULL-okat, de nem tudja biztosan jelezni, hogy egy oszlop nem fogad el NULL-okat. A IS_NULLABLE oszlop biztosan jelzi, hogy egy oszlop nem fogad el NULL-okat, de nem tudja biztosan jelezni, hogy egy oszlop elfogadja a NULL-okat.
MEGJEGYZÉSEK (ODBC 1.0) 12 Varchar Az oszlop leírása.
COLUMN_DEF (ODBC 3.0) 13 Varchar Az oszlop alapértelmezett értéke. Az oszlopban lévő értéket akkor kell stringként értelmezni, ha idézőjelben van bevonva.

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éket nem lehet levágás nélkül megjeleníteni, ez az oszlop tartalmazza a TRUNCATED-t, 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) 14 Smallint nem NULL SQL adattípus, ahogy az IRD SQL_DESC_TYPE rekordmezőjében látható. Ez lehet ODBC SQL-adattípus vagy illesztőprogram-specifikus SQL-adattípus. Ez az oszlop megegyezik a DATA_TYPE oszlopmal, kivéve a dátum- és intervallumadattípusokat. Ez az oszlop a nem tömör adattípust (például SQL_DATETIME vagy SQL_INTERVAL) adja vissza, nem pedig a rövidebb adattípust (például SQL_TYPE_DATE vagy SQL_INTERVAL_YEAR_TO_MONTH) dátumidő és intervallum adattípusoknál. Ha ez az oszlop SQL_DATETIME vagy SQL_INTERVAL visszaadja az adatokat, a konkrét adattípus a SQL_DATETIME_SUB oszlopból határozható meg. Az érvényes ODBC SQL adattípusok listájáért 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.

Az adattípusok az ODBC 3-ra visszatértek. x és ODBC 2. X alkalmazás eltérő lehet. További információ: Visszamenőleges kompatibilitás és szabványmegfelelés.
SQL_DATETIME_SUB (ODBC 3.0) 15 Smallint 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. További információért a dátumidő- és intervallum-alkódokról lásd: "SQL_DESC_DATETIME_INTERVAL_CODE" az SQLSetDescField részben.
CHAR_OCTET_LENGTH (ODBC 3.0) 16 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) 17 Egész szám nem NULL Az oszlop sorszáma a táblázatban. A táblázat első oszlopa az 1.
IS_NULLABLE (ODBC 3.0) 18 Varchar "NEM", ha az oszlop nem tartalmaz NULL-eket.

"IGEN", ha az oszlop tartalmazhatná a NULL-okat.

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

Az ISO szabályait betartják a nullibilitás meghatározására. Az ISO SQL-kompatibilis DBMS nem tud üres sztringet visszaadni.

Az adott oszlop által visszaadott érték eltér a NULLABLE oszlop visszaadott értékétől. (Lásd a NULLABLE oszlop leírását.)

Kódpélda

A következő példában egy alkalmazás puffereket hirdet az SQLColumnok által visszaadott eredményhalmazra. Az SQLColumns-t hívja, hogy visszaadja az eredményhalmazt, amely leírja az EMPLOYEE tábla minden oszlopát. Ezután az SQLBindCol-t hívja, hogy az eredményhalmaz oszlopait a pufferekhez kötje. Végül az alkalmazás minden adatsort letölt SQLFetch-jel és feldolgozza azokat.

// SQLColumns_Function.cpp  
// compile with: ODBC32.lib  
#include <windows.h>  
#include <sqlext.h>  
#define STR_LEN 128 + 1  
#define REM_LEN 254 + 1  
  
// Declare buffers for result set data  
SQLCHAR szSchema[STR_LEN];  
SQLCHAR szCatalog[STR_LEN];  
SQLCHAR szColumnName[STR_LEN];  
SQLCHAR szTableName[STR_LEN];  
SQLCHAR szTypeName[STR_LEN];  
SQLCHAR szRemarks[REM_LEN];  
SQLCHAR szColumnDefault[STR_LEN];  
SQLCHAR szIsNullable[STR_LEN];  
  
SQLINTEGER ColumnSize;  
SQLINTEGER BufferLength;  
SQLINTEGER CharOctetLength;  
SQLINTEGER OrdinalPosition;  
  
SQLSMALLINT DataType;  
SQLSMALLINT DecimalDigits;  
SQLSMALLINT NumPrecRadix;  
SQLSMALLINT Nullable;  
SQLSMALLINT SQLDataType;  
SQLSMALLINT DatetimeSubtypeCode;  
  
SQLHSTMT hstmt = NULL;  
  
// Declare buffers for bytes available to return  
SQLINTEGER cbCatalog;  
SQLINTEGER cbSchema;  
SQLINTEGER cbTableName;  
SQLINTEGER cbColumnName;  
SQLINTEGER cbDataType;  
SQLINTEGER cbTypeName;  
SQLINTEGER cbColumnSize;  
SQLLEN cbBufferLength;  
SQLINTEGER cbDecimalDigits;  
SQLINTEGER cbNumPrecRadix;  
SQLINTEGER cbNullable;  
SQLINTEGER cbRemarks;  
SQLINTEGER cbColumnDefault;  
SQLINTEGER cbSQLDataType;  
SQLINTEGER cbDatetimeSubtypeCode;  
SQLINTEGER cbCharOctetLength;  
SQLINTEGER cbOrdinalPosition;  
SQLINTEGER cbIsNullable;  
  
int main() {  
   SQLHENV henv;  
   SQLHDBC hdbc;  
   SQLHSTMT hstmt = 0;  
   SQLRETURN retcode;  
  
   retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);  
   retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER*)SQL_OV_ODBC3, 0);   
   retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);   
   retcode = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);  
   retcode = SQLConnect(hdbc, (SQLCHAR*) "Northwind", SQL_NTS, (SQLCHAR*) NULL, 0, NULL, 0);  
   retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);  
   retcode = SQLColumns(hstmt, NULL, 0, NULL, 0, (SQLCHAR*)"CUSTOMERS", SQL_NTS, NULL, 0);  
  
   if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {  
      // Bind columns in result set to buffers  
      SQLBindCol(hstmt, 1, SQL_C_CHAR, szCatalog, STR_LEN,&cbCatalog);  
      SQLBindCol(hstmt, 2, SQL_C_CHAR, szSchema, STR_LEN, &cbSchema);  
      SQLBindCol(hstmt, 3, SQL_C_CHAR, szTableName, STR_LEN,&cbTableName);  
      SQLBindCol(hstmt, 4, SQL_C_CHAR, szColumnName, STR_LEN, &cbColumnName);  
      SQLBindCol(hstmt, 5, SQL_C_SSHORT, &DataType, 0, &cbDataType);  
      SQLBindCol(hstmt, 6, SQL_C_CHAR, szTypeName, STR_LEN, &cbTypeName);  
      SQLBindCol(hstmt, 7, SQL_C_SLONG, &ColumnSize, 0, &cbColumnSize);  
      SQLBindCol(hstmt, 8, SQL_C_SLONG, &BufferLength, 0, &cbBufferLength);  
      SQLBindCol(hstmt, 9, SQL_C_SSHORT, &DecimalDigits, 0, &cbDecimalDigits);  
      SQLBindCol(hstmt, 10, SQL_C_SSHORT, &NumPrecRadix, 0, &cbNumPrecRadix);  
      SQLBindCol(hstmt, 11, SQL_C_SSHORT, &Nullable, 0, &cbNullable);  
      SQLBindCol(hstmt, 12, SQL_C_CHAR, szRemarks, REM_LEN, &cbRemarks);  
      SQLBindCol(hstmt, 13, SQL_C_CHAR, szColumnDefault, STR_LEN, &cbColumnDefault);  
      SQLBindCol(hstmt, 14, SQL_C_SSHORT, &SQLDataType, 0, &cbSQLDataType);  
      SQLBindCol(hstmt, 15, SQL_C_SSHORT, &DatetimeSubtypeCode, 0, &cbDatetimeSubtypeCode);  
      SQLBindCol(hstmt, 16, SQL_C_SLONG, &CharOctetLength, 0, &cbCharOctetLength);  
      SQLBindCol(hstmt, 17, SQL_C_SLONG, &OrdinalPosition, 0, &cbOrdinalPosition);  
      SQLBindCol(hstmt, 18, SQL_C_CHAR, szIsNullable, STR_LEN, &cbIsNullable);  
  
      while (SQL_SUCCESS == retcode) {  
         retcode = SQLFetch(hstmt);  
         /*  
         if (retcode == SQL_ERROR || retcode == SQL_SUCCESS_WITH_INFO)  
            0;   // show_error();  
         if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)  
            0;   // Process fetched data  
         else  
            break;  
        */  
      }  
   }  
}  
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
Jogosultságok visszaküldése egy oszlop vagy oszlopok számára SQLColumnPrivileges Function
Adatblokk beolvasása vagy egy eredményhalmaz görgetése SQLFetchScroll függvény
Több adatsor beolvasása SQLFetch függvény
Olyan oszlopok visszaküldése, amelyek egyedien azonosítanak egy sort, vagy az oszlopok automatikusan frissülnek egy tranzakcióval SQLSpecialColumns Function
Táblázatstatisztikák és indexek visszaadása SQLStatistics Function
Adatforrásban található táblák listájának visszaadása SQLTables függvény
Visszaadva a jogosultságok egy asztalhoz vagy táblákhoz SQLTablePrivileges Function