SQLSetDescField függvény

Megfelelőség
Bemutatott verzió: ODBC 3.0 szabványoknak megfelelés: ISO 92

Összefoglalás
Az SQLSetDescField egyetlen descriptor rekord mezőjének értékét állítja be.

Syntax

SQLRETURN SQLSetDescField(  
     SQLHDESC      DescriptorHandle,  
     SQLSMALLINT   RecNumber,  
     SQLSMALLINT   FieldIdentifier,  
     SQLPOINTER    ValuePtr,  
     SQLINTEGER    BufferLength);  

Arguments

DescriptorHandle
[Bemenet] Leíró kilét.

RecNumber
[Bemenet] Jelzi azt a leíró rekordot, amely tartalmazza azt a mezőt, amelyet az alkalmazás be akar állítani. A leíró rekordokat 0-tól számozták, a 0-as rekord pedig a könyvjelző rekord. A RecNumber érvelést figyelmen kívül hagyják a fejlécmezők esetén.

FieldIdentifier
[Bemenet] Jelzi a leíró mezőjét, amelynek értékét kell beállítani. További információért lásd a "FieldIdentifier Argument" részt a "Hozzászólások" szekcióban.

ValuePtr
[Bemenet] Mutató egy pufferre, amely tartalmazza a leíró információt, vagy egy egész számértéket. Az adattípus a FieldIdentifier értékétől függ. Ha a ValuePtr egész számérték, akkor 8 bájtnak (SQLLEN), 4 bájtnak (SQLINTEGER) vagy 2 bájtnak (SQLSMALLINT) tekinthető, a FieldIdentifier argumentum értékétől függően.

BufferLength
[Bemenet] Ha a FieldIdentifier egy ODBC-definiált mező, és a ValuePtr egy karakterláncszálra vagy bináris pufferre mutat, akkor ennek az argumentumnak a *ValuePtr hosszának kell lennie. Karakterlánc adatok esetén ennek az argumentumnak tartalmaznia kell a sztróban lévő bájtok számát.

Ha a FieldIdentifier egy ODBC-definiált mező, a ValuePtr pedig egy egész szám, akkor a BufferLength-et figyelmen kívül hagyjuk.

Ha a FieldIdentifier illesztőprogram-definiált mező, az alkalmazás a Driver Manager számára a BufferLength argumentus beállításával jelzi a mező természetét. A BufferLength a következő értékeket kaphatja:

  • Ha a ValuePtr egy karakterlánc mutatója, akkor a BufferLength a lánc vagy SQL_NTS hossza.

  • Ha a ValuePtr egy bináris pufferre mutató, akkor az alkalmazás a SQL_LEN_BINARY_ATTR(length) makró eredményét a BufferLength-be helyezi. Ez negatív értéket ad a BufferLength-ben.

  • Ha a ValuePtr egy másik értékre mutató, mint egy karakterlánc vagy bináris string, akkor a BufferLengthnek az értéke az SQL_IS_POINTER.

  • Ha a ValuePtr fix hosszúságú értéket tartalmaz, akkor a BufferLength vagy SQL_IS_INTEGER, SQL_IS_UINTEGER, SQL_IS_SMALLINT vagy SQL_IS_USMALLINT, ahogy megfelelően.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLSetDescField SQL_ERROR vagy SQL_SUCCESS_WITH_INFO értéket ad vissza, egy hozzárendelt SQLSTATE érték elérhető SQLGetDiagRec hívásával, amely egy SQL_HANDLE_DESC HandleType és egy DescriptorHandle Handle nevű HandleType (Handle) segítségével érkezik. Az alábbi táblázat felsorolja az SQLSetDescField á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 Error Description
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01S02 A beállítás értéke módosult A meghajtó nem támogatta a *ValuePtr által megadott értéket (ha a ValuePtr mutató volt), sem a ValuePtr értékét (ha ValuePtr egész érték volt), vagy a *ValuePtr érvénytelen volt a megvalósítási munkakörülmények miatt, így az illesztőprogram hasonló értéket cserélt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
07009 Érvénytelen descriptor index A FieldIdentifier argumentum egy rekordmező volt, a RecNumber argumenta 0, a DescriptorHandle érve pedig egy IPD handle-re utalt.

A RecNumber érve kisebb volt 0-nál, a DescriptorHandle érve pedig ARD-re vagy APD-re utalt.

A RecNumber argumentum nagyobb volt, mint az adatforrás által támogatott maximális oszlopok vagy paraméterek, míg a DescriptorHandle argumentum APD-re vagy ARD-re utalt.

(DM) A FieldIdentifier érve SQL_DESC_COUNT volt, míg a *ValuePtr érve kevesebb volt, mint 0.

A RecNumber érvelés 0-val egyenlő volt, míg a DescriptorHandle érve egy implicit módon kijelölt APD-re utalt. (Ez a hiba nem fordul elő kifejezetten kijelölt alkalmazásleírásnál, mert nem ismert, hogy egy explicit módon kijelölt alkalmazásleíró APD vagy ARD-e, csak a végrehajtási időig.)
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.
22001 Sztringadatok, jobb csonkolt A FieldIdentifier argumentum SQL_DESC_NAME volt, a BufferLength argumentus pedig SQL_MAX_IDENTIFIER_LEN-nál nagyobb értékű volt.
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.
HY010 Függvényütemezési hiba (DM) A DescriptorHandle egy StatementHandle eszközhöz volt kapcsolva, amelyhez egy aszinkron futó függvényt hívtak (nem ezt), és még akkor futott, amikor ezt a függvényt hívták.

(DM) Az SQLExecute, SQLExecDirect, SQLBulkOperations vagy SQLSetPos volt a StatementHandle számára, amelyhez a DescriptorHandle kapcsolódott, és SQL_NEED_DATA visszaadták. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg.

(DM) Egy aszinkron futóképességű függvényt hívtak a DescriptorHandle kapcsolati handle-hez. Ez az aszinkron függvény még akkor futott, amikor az SQLSetDescField függvényt hívták.

(DM) Az SQLExecute, SQLExecDirect vagy SQLMoreResults meghívták az egyik DescriptorHandle által összetartozó utasításkezelőhöz, és SQL_PARAM_DATA_AVAILABLE adta vissza. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva.
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.
HY016 Nem lehet módosítani egy implementációs sor leírást A DescriptorHandle érve IRD-hez volt kötve, míg a FieldIdentifier érve nem volt SQL_DESC_ARRAY_STATUS_PTR vagy SQL_DESC_ROWS_PROCESSED_PTR.
HY021 Következetlen leíró információk A SQL_DESC_TYPE és SQL_DESC_DATETIME_INTERVAL_CODE mezők nem alkotnak érvényes ODBC SQL típust, sem érvényes driver-specifikus SQL típust (IPD-k esetén), sem érvényes ODBC C típust (APD-k vagy ARD-k esetén).

A konzisztencia-ellenőrzés során ellenőrizett leírási információk nem voltak következetesek. (Lásd "Konzisztencia ellenőrzése" az SQLSetDescRec részben.)
HY090 Érvénytelen sztring vagy puffer hossza (DM) *A ValuePtr egy karakterlánc, és a BufferLength kevesebb volt nullánál, de nem volt egyenlő SQL_NTS-vel.

(DM) Az illesztőprogram egy ODBC 2*.x* illesztőgép volt, a leíró ARD volt, a ColumnNumber argumentum 0-ra volt állítva, és a BufferLength argument értéke nem volt 4-gy.
HY091 Érvénytelen deskriptor mezőazonosító A FieldIdentifier argumentumhoz megadott érték nem ODBC által definiált mező volt, és nem implementáció által definiált érték.

A FieldIdentifier érvelés érvénytelen volt a DescriptorHandle érveléshez.

A FieldIdentifier argumentum egy csak olvasható, ODBC-definiált mező volt.
HY092 Érvénytelen attribútum/opcióazonosító A *ValuePtr értéke nem volt érvényes a FieldIdentifier argumentumra.

A FieldIdentifier érve SQL_DESC_UNNAMED, a ValuePtr pedig SQL_NAMED.
HY105 Érvénytelen paramétertípus (DM) A SQL_DESC_PARAMETER_TYPE mező által megadott érték érvénytelen volt. (További információért lásd az SQLBindParameter "InputOutputType argument" szakaszá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óért a felfüggesztett állapotról lásd: Mi újság az ODBC 3.8-ban.
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) A DescriptorHandle hozzátartozó illesztőprogram nem támogatja ezt a funkciót.

Comments

Egy alkalmazás hívhatja az SQLSetDescField-et , hogy bármelyik leíró mezőt egyenként beállítsa. Egy SQLSetDescField hívás egyetlen mezőt állít be egyetlen leíróban. Ez a függvény meghívható, hogy bármely mezőt beállítson bármilyen leíró típusban, feltéve, hogy a mező be van állítva. (Lásd a táblázatot ebben a szakaszban.)

Note

Ha az SQLSetDescField-hez hívás sikertelen, a RecNumber argumentus által azonosított leíró rekord tartalma nem lesz meghatározva.

Más függvények is meghívhatók, hogy több leíró mezőt állítsanak be egyetlen hívással a függvényből. Az SQLSetDescRec függvény különféle mezőket állít be, amelyek befolyásolják az adattípust és puffert, amelyek egy oszlophoz vagy paraméterhez kötve vannak (a SQL_DESC_TYPE, SQL_DESC_DATETIME_INTERVAL_CODE, SQL_DESC_OCTET_LENGTH, SQL_DESC_PRECISION, SQL_DESC_SCALE, SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR és SQL_DESC_INDICATOR_PTR mezők). Az SQLBindCol vagy SQLBindParameter segítségével teljes specifikációt készíthetünk egy oszlop vagy paraméter kötéséhez. Ezek a függvények egy specifikus leíró mezőcsoportot állítanak be egyetlen függvényhívással.

Az SQLSetDescField meghívható a kötési pufferek megváltoztatására azzal, hogy egy eltolást adunk a kötési mutatókhoz (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR vagy SQL_DESC_OCTET_LENGTH_PTR). Ez megváltoztatja a kötési puffereket anélkül, hogy meghívná az SQLBindCol vagy SQLBindParametert, így az alkalmazás képes SQL_DESC_DATA_PTR változtatni anélkül, hogy más mezőket, például SQL_DESC_DATA_TYPE-t változtatna.

Ha egy alkalmazás az SQLSetDescField-et hívja, hogy bármely más mezőt beállítsa a SQL_DESC_COUNT-en kívül, vagy a SQL_DESC_DATA_PTR, SQL_DESC_OCTET_LENGTH_PTR vagy SQL_DESC_INDICATOR_PTR halasztott mezőket, a rekord korlátmentessé válik.

A Descriptor fejlécek a megfelelő FieldIdentifier SQLSetDescField hívásával állítják be. Sok fejlécmező szintén utasítás attribútum, így SQLSetStmtAttr hívással is be lehet állítani. Ez lehetővé teszi az alkalmazások számára, hogy leíró mezőt állítsanak be anélkül, hogy először leíró fogantyút kapnának. Amikor az SQLSetDescField fejlécmező beállításához hívjuk, a RecNumber érvet figyelmen kívül hagyjuk.

A könyvjelző mezők beállításához 0 RecNumber áll.

Note

A SQL_ATTR_USE_BOOKMARKS utasítás attribútumot mindig be kell állítani, mielőtt az SQLSetDescField meghívja a könyvjelző mezőket. Bár ez nem kötelező, erősen ajánlott.

Beállítási leíró mezők sorrendje

Amikor az SQLSetDescField hívásakor a leíró mezőket beállítja, az alkalmazásnak egy adott sorrendet kell követnie:

  1. A jelentkezésnek először be kell állítania a SQL_DESC_TYPE, SQL_DESC_CONCISE_TYPE vagy SQL_DESC_DATETIME_INTERVAL_CODE mezőt.

  2. Miután az egyik mezőt beállították, az alkalmazás beállíthat egy adattípusú attribútumot, és az illesztőprogram az adattípus attribútummezőit a megfelelő alapértelmezett értékekre állítja be. A típus attribútummezők automatikus alapértelmezett beállítása biztosítja, hogy a leíró mindig készen álljon a használatra, miután az alkalmazás megadta az adattípust. Ha az alkalmazás kifejezetten beállítja egy adattípus-attribútumot, akkor felülírja az alapértelmezett attribútumot.

  3. Miután az 1. lépésben felsorolt mezők egyikét beállították, és az adattípus-attribútumokat beállították, az alkalmazás SQL_DESC_DATA_PTR beállíthatja. Ez konzisztenciát kér a leíró mezők esetében. Ha az alkalmazás megváltoztatja az adattípust vagy attribútumokat a SQL_DESC_DATA_PTR mező beállítása után, az illesztőprogram null mutatóvá állítja SQL_DESC_DATA_PTR, ezzel megszüntetve a rekordot. Ez arra kényszeríti az alkalmazást, hogy a megfelelő lépéseket egymás után teljesítse, mielőtt a leíró rekord használható lenne.

Leíró mezők inicializálása

Amikor egy leíró kijelölt, a leíró mezői alapértelmezett értékre inicializálhatók, alapértelmezett érték nélkül inicializálhatók, vagy nem definiálhatók a leíró típusához. Az alábbi táblázatok minden mező inicializációját mutatják az egyes leíró típusokhoz, ahol a "D" jelzi, hogy a mező alapértelmezett inicializációval van indítva, míg az "ND" jelzi, hogy a mező alapértelmezett nélkül indul. Ha egy szám jelenik meg, akkor a mező alapértelmezett értéke az a szám. A táblázatok azt is megmutatják, hogy egy mező olvasható-e/írható (R/W) vagy csak olvasható (R).

Az IRD mezői csak akkor rendelkeznek alapértelmezett értékkel, ha a kijelentést elkészítették vagy végrehajtották, és az IRD feltöltődött, nem akkor, ha a kijelentés handle-t vagy descriptort kiosztották. Amíg az IRD fel nem töltődik, bármilyen IRD mezőhöz való hozzáférési kísérlet hibát ad vissza.

Néhány leíró mező egy vagy több, de nem mindegyik leíró típusra (ARD-k és IRD-k, valamint APD-k és IPD-k) van definiálva. Ha egy mező definiálatlan egy leíró típusra, akkor egyik olyan függvény sem igényel rá, amely azt a leíró függvényt használja.

Az SQLGetDescField által elérhető mezők nem feltétlenül állíthatóak be az SQLSetDescField által. Az SQLSetDescField által beállítható mezők a következő táblázatokban találhatók.

A fejlécmezők inicializálását a következő táblázat vázolja meg.

Fejléc-mező neve Típus R/W Default
SQL_DESC_ALLOC_TYPE SQLSMALLINT ARD: R APD: R IRD: R IPD: R ARD: SQL_DESC_ALLOC_AUTO az implicit, vagy SQL_DESC_ALLOC_USER az explicit

APD: SQL_DESC_ALLOC_AUTO implicit vagy SQL_DESC_ALLOC_USER explicit

IRD: SQL_DESC_ALLOC_AUTO

IPD: SQL_DESC_ALLOC_AUTO
SQL_DESC_ARRAY_SIZE SQLULEN ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD:[1] APD:[1] IRD: Használaton kívüli IPD: Használaton kívül
SQL_DESC_ARRAY_STATUS_PTR SQLUSMALLINT* ARD: R/W APD: R/W IRD: R/W IPD: R/W ARD: Null ptr APD: Null ptr IRD: Null ptr IPD: Null ptr
SQL_DESC_BIND_OFFSET_PTR SQLLEN* ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD: Null ptr APD: Null ptr IRD: Használatlan IPD: Használaton kívül
SQL_DESC_BIND_TYPE SQLINTEGER ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD: SQL_BIND_BY_COLUMN

APD: SQL_BIND_BY_COLUMN

IRD: Használaton kívül

IPD: Használatlan
SQL_DESC_COUNT SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: 0 APD: 0 IRD: D IPD: 0
SQL_DESC_ROWS_PROCESSED_PTR SQLULEN* ARD: Használaton kívüli APD: Használatlan IRD: R/W IPD: R/W ARD: Használaton kívüli APD: Használaton kívüli IRD: Null ptr IPD: Null ptr

[1] Ezek a mezők csak akkor definiálódnak, ha az IPD-t automatikusan feltölti az illezővezető. Ha nem, akkor nincs meghatározva. Ha egy alkalmazás megpróbálja beállítani ezeket a mezőket, visszaadja a SQLSTATE HY091 (Invalid descriptor field identifier) érték.

A rekordmezők inicializálása a következő táblázat szerint van.

Rekordmező neve Típus R/W Default
SQL_DESC_AUTO_UNIQUE_VALUE SQLINTEGER ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_BASE_COLUMN_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_BASE_TABLE_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_LEÍRÁS_KIS-nagybetű_ÉRZÉKENY SQLINTEGER ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: Használaton kívüli APD: Használatlan IRD: D IPD: D[1]
SQL_DESC_CATALOG_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_CONCISE_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_ DEFAULT APD: SQL_C_ DEFAULT IRD: D IPD: ND
SQL_DESC_DATA_PTR SQLPOINTER ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD: null ptr APD: null ptr IRD: Használaton kívüli IPD: Használatlan[2]
SQL_DESC_DATETIME_INTERVAL_CODE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_DATETIME_INTERVAL_PRECISION SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL leíró megjelenítési mérete SQLLEN ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_FIXED_PREC_SCALE SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: Használaton kívüli APD: Használatlan IRD: D IPD: D[1]
SQL_DESC_INDICATOR_PTR SQLLEN * ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD: Null ptr APD: Null ptr IRD: Használatlan IPD: Használaton kívül
SQL_DESC_LABEL SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_LENGTH SQLULEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_LITERAL_PREFIX SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_LITERAL_SUFFIX SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_LEÍRÓ_HELYI_TÍPUS_NÉV SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: Használaton kívüli APD: Használatlan IRD: D IPD: D[1]
SQL_DESC_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NULLABLE SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_NUM_PREC_RADIX SQLINTEGER ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH SQLLEN ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_OCTET_LENGTH_PTR SQLLEN * ARD: R/W APD: R/W IRD: Használaton kívüli IPD: Használaton kívül ARD: Null ptr APD: Null ptr IRD: Használatlan IPD: Használaton kívül
SQL_DESC_PARAMETER_TYPE SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: Használatlan IPD: R/W ARD: Használaton kívüli APD: Használaton kívüli IRD: Használaton kívüli IPD: D=SQL_PARAM_INPUT
SQL_DESC_PRECISION SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_ROWVER SQLSMALLINT ARD: Használaton kívül

APD: Használatlan

IRD: R

IPD: R
ARD: Használaton kívül

APD: Használatlan

IRD: ND

IPD: ND
SQL_DESC_SCALE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_SCHEMA_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_SEARCHABLE SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_TABLE_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül
SQL_DESC_TYPE SQLSMALLINT ARD: R/W APD: R/W IRD: R IPD: R/W ARD: SQL_C_DEFAULT APD: SQL_C_DEFAULT IRD: D IPD: ND
SQL_DESC_TYPE_NAME SQLCHAR * ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: Használaton kívüli APD: Használatlan IRD: D IPD: D[1]
SQL_DESC_UNNAMED SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R/W ARD: ND APD: ND IRD: D IPD: ND
SQL_DESC_UNSIGNED SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: R ARD: Használaton kívüli APD: Használatlan IRD: D IPD: D[1]
SQL_DESC_UPDATABLE SQLSMALLINT ARD: Használaton kívüli APD: Használaton kívüli IRD: R IPD: Használaton kívül ARD: Használaton kívüli APD: Használaton kívüli IRD: D IPD: Használaton kívül

[1] Ezek a mezők csak akkor definiálódnak, ha az IPD-t automatikusan feltölti az illezővezető. Ha nem, akkor nincs meghatározva. Ha egy alkalmazás megpróbálja beállítani ezeket a mezőket, visszaadja a SQLSTATE HY091 (Invalid descriptor field identifier) érték.

[2] Az IPD SQL_DESC_DATA_PTR mezője beállítható arra, hogy konzisztenciát ellenőrizz. Egy későbbi SQLGetDescField vagy SQLGetDescRec hívás során az illesztőprogramnak nem kell visszaadnia azt az értéket, amelyre SQL_DESC_DATA_PTR beállított.

FieldIdentifier érvelés

A FieldIdentifier argumentum azt jelzi, hogy melyik descriptor mezőt kell beállítani. A leíró tartalmazza a leíró fejlécet, amely a következő részben, a "Fejlécmezők" fejlécében leírt mezőkből, valamint a nulla vagy több leíró rekordból áll, amelyek a "Fejlécmezők" szakasz következő szakaszában leírt rekordmezőkből állnak.

Fejlécermezők

Minden leírónak van egy fejléce, amely az alábbi mezőkből áll:

SQL_DESC_ALLOC_TYPE [Mindenki]
Ez az csak olvasható SQLSMALLINT fejlécező mező meghatározza az illesztőprogramot automatikusan vagy kifejezetten az alkalmazás rendelte-e. Az alkalmazás ezt a területet megszerezheti, de nem módosíthatja. A mezőt az illesztőgép SQL_DESC_ALLOC_AUTO-ra állítja be, ha a leírót automatikusan a meghajtó rendelte. Az illesztőprogram SQL_DESC_ALLOC_USER állítja be, ha a leíró kifejezetten az alkalmazás által kijelölt.

SQL_DESC_ARRAY_SIZE [Alkalmazási leírások]
ARD-ekben ez a SQLULEN fejlécek mező megadja a sorhalmaz sorainak számát. Ez az a sor száma, amelyet vissza kell adni egy SQLFetch vagy SQLFetchScroll hívás vagy az SQLBulkOperations vagy SQLSetPos hívása által működtetni.

APD-kben ez a SQLULEN fejlécek határozzák meg az egyes paraméterek értékszámát.

Ennek a mezőnek az alapértelmezett értéke 1. Ha SQL_DESC_ARRAY_SIZE nagyobb, mint 1, az APD vagy ARD SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR és SQL_DESC_OCTET_LENGTH_PTR az APD vagy ARD a tömbekre mutat. Minden tömb kardinalitása megegyezik ennek a mezőnek értékével.

Ez a mező az ARD esetében beállítható, ha az SQLSetStmtAttr a SQL_ATTR_ROW_ARRAY_SIZE attribútummal hívja meg. Ez a mező az APD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAMSET_SIZE attribútummal is meghívható.

SQL_DESC_ARRAY_STATUS_PTR [Mind]
Minden leíró típus esetén ez az SQLUSMALLINT * fejlécek egy SQLUSMALLINT értékekből álló tömbre mutat. Ezeket a tömböket a következőképpen nevezik: sorállapot tömb (IRD), paraméterállapot tömb (IPD), sorműveleti tömb (ARD) és paraméterműveleti tömb (APD).

Az IRD-ben ez a fejléc mező egy sor státusz tömbrére mutat, amely státuszértékeket tartalmaz egy SQLBulkOperations, SQLFetch, SQLFetchScroll vagy SQLSetPos hívás után. A tömbben annyi elem van, amennyi sor van a sorhalmazban. Az alkalmazásnak egy SQLUSMALLINT tömböt kell kiosztania, és be kell állítania ezt a mezőt, hogy a tömbre mutass. A mező alapértelmezés szerint null mutatóra van állítva. Az illesztőprogram tölti fel a tömböt – hacsak a SQL_DESC_ARRAY_STATUS_PTR mező nullmutatóra van állítva, ebben az esetben nem generálnak státuszértékeket, és a tömb nem lesz feltöltve.

Caution

A driver viselkedés definiálatlan, ha az alkalmazás beállítja azokat a sor állapot tömbje elemeit, amelyekhez az IRD SQL_DESC_ARRAY_STATUS_PTR mezője mutat.

A tömböt kezdetben egy SQLBulkOperations, SQLFetch, SQLFetchScroll vagy SQLSetPos hívás tölti fel. Ha a hívás nem SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO tért vissza, akkor a mező által mutatott tömb tartalma nem definiált. A tömb elemei a következő értékeket tartalmazhatják:

  • SQL_ROW_SUCCESS: A sort sikeresen átvették, és nem változott az utolsó szállítása óta.

  • SQL_ROW_SUCCESS_WITH_INFO: A sort sikeresen áthozták, és nem változott az utolsó szállítása óta. Azonban figyelmeztetést kaptunk a sorra vonatkozóan.

  • SQL_ROW_ERROR: Hiba történt a sorhoz való bevonás közben.

  • SQL_ROW_UPDATED: A sort sikeresen lefoglalták, és frissítették az utolsó letöltés óta. Ha a sort újra lehozják, az állapota SQL_ROW_SUCCESS.

  • SQL_ROW_DELETED: A sort törölték, mióta utoljára levitték.

  • SQL_ROW_ADDED: A sort az SQLBulkOperations helyezte be. Ha a sort újra lehozják, az állapota SQL_ROW_SUCCESS.

  • SQL_ROW_NOROW: A sorhalmaz átfedte az eredményhalmaz végét, és nem tért vissza olyan sor az állapot tömbje ezen elemének.

Ez a mező az IRD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_ROW_STATUS_PTR attribútummal is meghívható.

Az IRD SQL_DESC_ARRAY_STATUS_PTR mezője csak akkor érvényes, ha SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO visszaküldték. Ha a visszaküldési kód nem ezek közé tartozik, akkor az SQL_DESC_ROWS_PROCESSED_PTR által mutatott hely nem meghatározható.

Az IPD-ben ez a fejlécmező egy paraméterállapot-tömbrére mutat, amely az egyes paraméterértékek halmazához tartozó állapotinformációkat tartalmazza az SQLExecute vagy SQLExecDirect hívása után. Ha az SQLExecute vagy SQLExecDirect hívása nem adott vissza SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO, akkor a mező által mutatott tömb tartalma nem definiált. Az alkalmazásnak egy SQLUSMALLINT tömböt kell kiosztania, és be kell állítania ezt a mezőt, hogy a tömbre mutass. Az illesztőprogram tölti fel a tömböt – hacsak a SQL_DESC_ARRAY_STATUS_PTR mező nullmutatóra van állítva, ebben az esetben nem generálnak státuszértékeket, és a tömb nem lesz feltöltve. A tömb elemei a következő értékeket tartalmazhatják:

  • SQL_PARAM_SUCCESS: Az SQL utasítást sikeresen végrehajtották ezen paraméterkészleten.

  • SQL_PARAM_SUCCESS_WITH_INFO: Az SQL utasítást sikeresen végrehajtották ezen paraméterkészleten; azonban figyelmeztető információk megtalálhatók a diagnosztikai adatstruktúrában.

  • SQL_PARAM_ERROR: Hiba történt ennek a paraméterhalmaznak a feldolgozásánál. További hibainformációk találhatók a diagnosztikai adatstruktúrában.

  • SQL_PARAM_UNUSED: Ezt a paraméterhalmazt nem használták fel, valószínűleg azért, mert egy korábbi paraméterkészlet hibát okozott, ami megszakította a további feldolgozást, vagy mert SQL_PARAM_IGNORE az APD SQL_DESC_ARRAY_STATUS_PTR mezője által megadott tömbben lévő paraméterhalmazra volt beállítva.

  • SQL_PARAM_DIAG_UNAVAILABLE: Diagnosztikai információk nem állnak rendelkezésre. Erre példa, amikor az illesztőgép monolitikus egységként kezeli a paramétertömböket, és így nem generál ilyen szintű hibainformációt.

Ez a mező az IPD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAM_STATUS_PTR attribútummal szól.

Az ARD-ben ez a fejléc mező egy sorműveleti tömbrére mutat, amelyet az alkalmazás beállíthat, hogy jelezze, hogy ezt a sort figyelmen kívül hagyjuk-e SQLSetPos műveletekhez. A tömb elemei a következő értékeket tartalmazhatják:

  • SQL_ROW_PROCEED: A sor az SQLSetPos tömeges műveletéhez tartozik. (Ez a beállítás nem garantálja, hogy a művelet a sorban történik. Ha a sor SQL_ROW_ERROR státusza van az IRD sor állapot tömbben, az illesztőprogram nem feltétlenül tudja végrehajtani a műveletet a sorban.)

  • SQL_ROW_IGNORE: A sor kizárva a tömeges műveletből SQLSetPos használatával.

Ha a tömb egyik eleme sem van beállítva, minden sor belekerül a tömeges műveletbe. Ha az ARD SQL_DESC_ARRAY_STATUS_PTR mezőjében lévő érték null mutató, akkor minden sor belekerül a tömeges műveletbe; Az értelmezés ugyanaz, mintha a mutató egy érvényes tömbrére mutatna, és a tömb minden eleme SQL_ROW_PROCEED. Ha a tömb egy elemét SQL_ROW_IGNORE-re állítják, a figyelmen kívül hagyott sor állapot tömbjében szereplő érték nem változik.

Ez a mező az ARD területén beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_ROW_OPERATION_PTR attribútummal szól.

Az APD-ben ez a fejléc mező egy paraméterműveleti tömbrére mutat, amelyet az alkalmazás beállíthat, hogy jelezze, hogy ezt a paraméterkészletet figyelmen kívül hagyjuk-e, amikor az SQLExecute vagy SQLExecDirect hívása történik. A tömb elemei a következő értékeket tartalmazhatják:

  • SQL_PARAM_PROCEED: A paraméterek halmaza az SQLExecute vagy SQLExecDirect hívásban található.

  • SQL_PARAM_IGNORE: A paraméterhalmazt kizárjuk az SQLExecute vagy SQLExecDirect hívásból.

Ha a tömb elemei nincsenek beállítva, akkor a tömb összes paraméterkészletét az SQLExecute vagy SQLExecDirect hívásokban használják. Ha az APD SQL_DESC_ARRAY_STATUS_PTR mezőjének értéke nullmutató, akkor minden paraméterhalmazt használnak; Az értelmezés ugyanaz, mintha a mutató egy érvényes tömbrére mutatna, és a tömb összes eleme SQL_PARAM_PROCEED.

Ez a mező az APD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAM_OPERATION_PTR attribútummal is meghívható.

SQL_DESC_BIND_OFFSET_PTR [Alkalmazásleírások]
Ez a SQLLEN * fejléc mező a kötési eltolásra mutat. Alapértelmezés szerint null mutatóra van állítva. Ha ez a mező nem null mutató, az illesztővezető dereferenciaként használja az mutatót, és hozzáadja a dehivatkozást minden olyan halasztott mezőhöz, amelynek nem null értéke van a leíró rekordban (SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR és SQL_DESC_OCTET_LENGTH_PTR) a behíváskor, és az új mutatóértékeket használja a kötéskor.

A kötési eltolást mindig közvetlenül hozzáadják az SQL_DESC_DATA_PTR, SQL_DESC_INDICATOR_PTR és SQL_DESC_OCTET_LENGTH_PTR mezők értékeihez. Ha az elmozdulat más értékre változik, az új érték továbbra is közvetlenül hozzáadódik az egyes leíró mezők értékéhez. Az új eloszlást nem adják hozzá a mezőértékhez és a korábbi eltoláshoz.

Ez a mező halasztott mező: nem akkor használják, amikor beállítják, hanem később, amikor az illedenser adatokat kell meghatároznia.

Ez a mező az ARD területén beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_ROW_BIND_OFFSET_PTR attribútummal is meghívható. Ez a mező az ARD rendszerében beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAM_BIND_OFFSET_PTR attribútummal szól.

További információért lásd a soronkénti kötés leírását az SQLFetchScroll és SQLBindParameter-ben.

SQL_DESC_BIND_TYPE [Alkalmazásleírások]
Ez az SQLUINTEGER fejléc-mező beállítja a kötésorientációt, amelyet oszlopok vagy paraméterek kötéséhez használjuk.

Az ARD-kban ez a mező megadja a kötés orientációját, amikor az SQLFetchScroll vagy SQLFetch a kapcsolódó utasításkezelőn meghívják.

Az oszloponkénti kötés kiválasztásához ez a mező SQL_BIND_BY_COLUMN-re van állítva (az alapértelmezett).

Ez a mező az ARD esetében beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_ROW_BIND_TYPE attribútummal szól.

Az APD-kben ez a mező megadja a dinamikus paraméterekhez használt kötési orientációt.

A paraméterek oszloponkénti kötésének kiválasztásához ez a mező SQL_BIND_BY_COLUMN-re van beállítva (az alapértelmezett).

Ez a mező az APD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAM_BIND_TYPE attribútummal is meghívható.

SQL_DESC_COUNT [Mind]
Ez az SQLSMALLINT fejlécelőmező megadja a legmagasabb számú adatot tartalmazó rekord 1-es indexét. Amikor a meghajtó beállítja a leíró adatszerkezetét, akkor a SQL_DESC_COUNT mezőt is be kell állítania, hogy hány rekord jelentő. Amikor egy alkalmazás egy példányt rendel ki ebből az adatstruktúrából, nem kell megadnia, hány rekordnak tartson helyet. Mivel az alkalmazás meghatározza a rekordok tartalmát, az illesztőprogram minden szükséges intézkedést megtesz annak érdekében, hogy a leíró handle megfelelő méretű adatszerkezetre utaljon.

SQL_DESC_COUNT nem az összes kötött adatoszlop (ha a mező egy ARD-ben van) vagy az összes kötött paraméter (ha a mező APD-ben van), hanem a legmagasabb számú rekord száma. Ha a legmagasabb számú oszlop vagy paraméter korlátlan, akkor SQL_DESC_COUNT a következő legmagasabb számú oszlop vagy paraméter számára változik. Ha egy oszlop vagy paraméter, amelynek száma kisebb, mint a legmagasabb számú oszlop száma, korlátlan (ha SQLBindCol-t hívunk a TargetValuePtr argumentummal null mutatóval, vagy SQLBindParameter a ParameterValuePtr argumentummal null mutatóra), SQL_DESC_COUNT nem változik. Ha további oszlopokat vagy paramétereket olyan számokkal kötöttek, amelyek nagyobbak az adatot tartalmazó legmagasabb számú rekordnál, a meghajtó automatikusan növeli az értéket a SQL_DESC_COUNT mezőben. Ha az összes oszlopot az SQLFreeStmt hívásával az SQL_UNBIND opcióval feloldják, az ARD és IRD SQL_DESC_COUNT mező 0-ra van állítva. Ha az SQLFreeStmt-t a SQL_RESET_PARAMS opcióval hívják, az APD és IPD SQL_DESC_COUNT mezői 0-ra vannak állítva.

Az SQL_DESC_COUNT értékét egy alkalmazás explicit módon beállíthatja SQLSetDescField hívásával. Ha SQL_DESC_COUNT értéket kifejezetten csökkentjük, minden olyan rekord, amelynek száma nagyobb, mint az új SQL_DESC_COUNT érték, gyakorlatilag eltávolításra kerül. Ha SQL_DESC_COUNT értéke kifejezetten 0-ra van állítva, és a mező egy ARD-ben van, az összes adatpuffer, kivéve egy kötött könyvjelző oszlopot, szabadul fel.

Az ARD ezen mezőjének rekordszáma nem tartalmazza a kötött könyvjelző oszlopot. Az egyetlen módja a könyvjelző oszlop kibontakodásának az, ha a SQL_DESC_DATA_PTR mezőt null mutatóra állítod.

SQL_DESC_ROWS_PROCESSED_PTR [Megvalósítási leírások]
Egy IRD-ben ez a SQLULEN * fejléc mező egy pufferre mutat, amely tartalmazza a SQLFetch vagy SQLFetchScroll hívása után lehozott sorok számát, vagy a sorok számát, amelyeket egy tömeges művelet során az SQLBulkOperations vagy SQLSetPos hívása hajt végre, beleértve a hibasorokat is.

IPD-ben ez a SQLUINTEGER * fejléc mező egy pufferre mutat, amely tartalmazza a feldolgozott paraméterhalmazokat, beleértve a hibahalmazokat is. Nem kap vissza egy számot, ha null mutatóról van szó.

SQL_DESC_ROWS_PROCESSED_PTR csak akkor érvényes, ha SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO visszatért a SQLFetch vagy SQLFetchScroll (IRD mező esetén) vagy SQLExecute, SQLExecDirect vagy SQLParamData (IPD mező esetén) hívása után. Ha a puffer, amelyre ez a mező jelölt puffert tölti ki, nem adja vissza SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO, a puffer tartalma nem definiált, kivéve, ha SQL_NO_DATA-t ad vissza, ekkor a puffer értéke 0-ra van állítva.

Ez a mező az ARD esetében beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_ROWS_FETCHED_PTR attribútummal is megszólal. Ez a mező az APD-ben beállítható, ha az SQLSetStmtAttr hívása a SQL_ATTR_PARAMS_PROCESSED_PTR attribútummal is megszólítható.

A mező által mutatott puffert az alkalmazás rendeli ki. Ez egy halasztott kimeneti puffer, amelyet a meghajtó állít be. Alapértelmezés szerint null mutatóra van állítva.

Rekordmezők

Minden leíró tartalmaz egy vagy több rekordot, amelyek mezőkből állnak, amelyek oszlopadatokat vagy dinamikus paramétereket határoznak meg, a leíró típusától függően. Minden rekord egyetlen oszlop vagy paraméter teljes definíciója.

SQL_DESC_AUTO_UNIQUE_VALUE [IRD-k]
Ez az csak olvasható SQLINTEGER rekordmező SQL_TRUE tartalmazza, ha az oszlop automatikusan növelő oszlop, vagy SQL_FALSE, ha az oszlop nem automatikusan növelő oszlop. Ez a mező csak olvasható, de az alatta lévő automatikus növekedési oszlop nem feltétlenül csak olvasható.

SQL_DESC_BASE_COLUMN_NAME [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az eredményhalmaz oszlopának alap oszlopnevét. Ha nincs bázisoszlop név (például az arckifejezések esetében), ez a változó üres stringet tartalmaz.

SQL_DESC_BASE_TABLE_NAME [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az eredményhalmaz oszlop alaptábla nevét. Ha egy alaptábla név nem definiálható vagy nem alkalmazható, ez a változó üres láncsort tartalmaz.

SQL_DESC_CASE_SENSITIVE [Megvalósítási leírások]
Ez az csak olvasható SQLINTEGER rekordmező SQL_TRUE tartalmazza, hogy az oszlop vagy paraméter kis- és kisméretérzékenynek minősül-e az összeállítások és összehasonlítások esetén, vagy SQL_FALSE, ha az oszlop nem kezeli kis- és nagybetűérzékenynek az összehasonlításoknál és összehasonlításoknál, vagy ha nem karakteroszlop.

SQL_DESC_CATALOG_NAME [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az alaptábla katalógusát, amely tartalmazza az oszlopot. A visszaküldési érték illetékesfüggő, ha az oszlop kifejezés, vagy ha az oszlop egy nézet része. Ha az adatforrás nem támogatja a katalógusokat, vagy a katalógus nem határozható meg, ez a változó üres stringet tartalmaz.

SQL_DESC_CONCISE_TYPE [Mindenki]
Ez a SQLSMALLINT fejlécmező minden adattípus tömör adattípusát határozza meg, beleértve a dátum-idő és intervallum adattípusokat is.

A SQL_DESC_CONCISE_TYPE, SQL_DESC_TYPE és SQL_DESC_DATETIME_INTERVAL_CODE mezők értékei egymástól függenek. Minden alkalommal, amikor az egyik mezőt beállítják, a másikat is be kell állítani. SQL_DESC_CONCISE_TYPE beállíthatható SQLBindCol , SQLBindParameter, vagy SQLSetDescField hívással. SQL_DESC_TYPE beállítható, ha SQLSetDescField vagy SQLSetDescRec hívással működhet.

Ha SQL_DESC_CONCISE_TYPE tömör adattípusra van beállítva, nem egy intervallum vagy dátum adattípus, akkor a SQL_DESC_TYPE mező ugyanarra az értékre van állítva, a SQL_DESC_DATETIME_INTERVAL_CODE mező pedig 0-ra van állítva.

Ha SQL_DESC_CONCISE_TYPE a rövid dátum vagy intervallum adattípusra van állítva, akkor a SQL_DESC_TYPE mező a megfelelő szöveges típusra (SQL_DATETIME vagy SQL_INTERVAL), a SQL_DESC_DATETIME_INTERVAL_CODE mező pedig a megfelelő alkódra van állítva.

SQL_DESC_DATA_PTR [Alkalmazás-leírók és IPD-k]
Ez az SQLPOINTER rekordmező egy változóra mutat, amely tartalmazza a paraméterértéket (APD-k esetén) vagy az oszlopértéket (ARD-k esetén). Ez a pálya egy halasztott mező. Nem akkor használják, amikor beállították, hanem később az illesztőprogram használja adatok visszaszerzésére.

Az ARD SQL_DESC_DATA_PTR mezője által meghatározott oszlop korlátlan, ha az SQLBindCol hívásában szereplő TargetValuePtr argumentum null mutató, vagy ha az ARD SQL_DESC_DATA_PTR mezőt egy null mutatóra hívva állítják be SQLSetDescField vagy SQLSetDescRec hívásával. Más mezők nem érintettek, ha a SQL_DESC_DATA_PTR mező null mutatóra van állítva.

Ha az SQLFetch vagy SQLFetchScroll hívása, amely kitölti a mező által mutatott puffert, nem SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO nem tér vissza, a puffer tartalma nem definiált.

Amikor egy APD, ARD vagy IPD SQL_DESC_DATA_PTR mezőjét beállítják, az illesztőprogram ellenőrzi, hogy a SQL_DESC_TYPE mezőben szereplő érték tartalmazza-e az érvényes ODBC C adattípust vagy egy illesztőgép-specifikus adattípust, és hogy az adattípusokat érintő összes többi mező konzisztens. Az IPD SQL_DESC_DATA_PTR mezőjének egyetlen használata a konzisztencia-ellenőrzés felhívása. Konkrétan, ha egy alkalmazás beállítja egy IPD SQL_DESC_DATA_PTR mezőjét, majd később az SQLGetDescField-et hívja ezen a mezőn, akkor nem feltétlenül kapja vissza azt az értéket, amit korábban beállított. További információért lásd: "Konzisztencia ellenőrzések" az SQLSetDescRec fájlban.

SQL_DESC_DATETIME_INTERVAL_CODE [Mindenki]
Ez az SQLSMALLINT rekordmező tartalmazza az adott dátum vagy intervallum adattípus alkódját, amikor a SQL_DESC_TYPE mező SQL_DATETIME vagy SQL_INTERVAL. Ez mind az SQL, mind a C adattípusokra igaz. A kód az adattípus nevéből áll, ahol a "CODE" vagy a "TYPE"C_TYPE" (dátumidő-típusoknál), vagy a "CODE" helyett a "INTERVAL" vagy a "C_INTERVAL" (intervallum típusoknál) helyettesítője.

Ha az alkalmazás leíróban SQL_DESC_TYPE és SQL_DESC_CONCISE_TYPE SQL_C_DEFAULT-re vannak beállítva, és a leíró nincs egy utasításkezelőhöz kötve, akkor a SQL_DESC_DATETIME_INTERVAL_CODE tartalma nem definiált.

Ez a mező beállítható, az alábbi táblázatban felsorolt dátumidő-adattípusokhoz.

Dátumidő-típusok DATETIME_INTERVAL_CODE
SQL_TYPE_DATE/SQL_C_TYPE_DATE SQL_CODE_DATE
SQL_TYPE_TIME/SQL_C_TYPE_TIME SQL_CODE_TIME
SQL_TYPE_TIMESTAMP/ SQL_C_TYPE_TIMESTAMP SQL_CODE_TIMESTAMP

Ez a mező beállítható, az alábbi táblázatban felsorolt intervallum adattípusokra.

Intervallum típusa DATETIME_INTERVAL_CODE
SQL_INTERVAL_DAY/ SQL_C_INTERVAL_DAY SQL_CODE_DAY
SQL_INTERVAL_DAY_TO_HOUR/ SQL_C_INTERVAL_DAY_TO_HOUR SQL_CODE_DAY_TO_HOUR
SQL_INTERVAL_DAY_TO_MINUTE/ SQL_C_INTERVAL_DAY_TO_MINUTE SQL_CODE_DAY_TO_MINUTE
SQL_INTERVAL_DAY_TO_SECOND/ SQL_C_INTERVAL_DAY_TO_SECOND SQL_CODE_DAY_TO_SECOND
SQL_INTERVAL_HOUR/ SQL_C_INTERVAL_HOUR SQL_CODE_HOUR
SQL_INTERVAL_HOUR_TO_MINUTE/ SQL_C_INTERVAL_HOUR_TO_MINUTE SQL_CODE_HOUR_TO_MINUTE
SQL_INTERVAL_HOUR_TO_SECOND/ SQL_C_INTERVAL_HOUR_TO_SECOND SQL_CODE_HOUR_TO_SECOND
SQL_INTERVAL_MINUTE/ SQL_C_INTERVAL_MINUTE SQL_CODE_MINUTE
SQL_INTERVAL_MINUTE_TO_SECOND/ SQL_C_INTERVAL_MINUTE_TO_SECOND SQL_CODE_MINUTE_TO_SECOND
SQL_INTERVAL_MONTH/ SQL_C_INTERVAL_MONTH SQL_CODE_MONTH
SQL_INTERVAL_SECOND/ SQL_C_INTERVAL_SECOND SQL_CODE_SECOND
SQL_INTERVAL_YEAR/ SQL_C_INTERVAL_YEAR SQL_CODE_YEAR
SQL_INTERVAL_YEAR_TO_MONTH/ SQL_C_INTERVAL_YEAR_TO_MONTH SQL_CODE_YEAR_TO_MONTH

További információért az adatintervallumokról és erről a mezőről lásd: Adattípus-azonosítók és leírások.

SQL_DESC_DATETIME_INTERVAL_PRECISION [Mind]
Ez az SQLINTEGER rekordmező tartalmazza az időköz vezető pontosságát, ha a SQL_DESC_TYPE mező SQL_INTERVAL. Amikor a SQL_DESC_DATETIME_INTERVAL_CODE mezőt intervallum adattípusra állítjuk, ez a mező az alapértelmezett intervallum precizitásra van állítva.

SQL_DESC_DISPLAY_SIZE [IRD-k]
Ez az csak olvasható SQLINTEGER rekordmező tartalmazza a maximális karakterszámot, amely szükséges az oszlop adatainak megjelenítéséhez.

SQL_DESC_FIXED_PREC_SCALE [Megvalósítási leírások]
Ez az csak olvasható SQLSMALLINT rekordmező SQL_TRUE-re van beállítva, ha az oszlop pontos numerikus oszlop, és fix pontossággal és nulla nem skálával rendelkezik, vagy SQL_FALSE, ha az oszlop nem pontosan numerikus oszlop, fix pontossággal és skálával.

SQL_DESC_INDICATOR_PTR [Alkalmazási leírások]
ARD-ben ez a SQLLEN * rekordmező az indikátor változóra mutat. Ez a változó SQL_NULL_DATA tartalmaz, ha az oszlop értéke NULL. APD-k esetén az indikátor változót SQL_NULL_DATA-re állítják be a NULL dinamikus argumentumok megadásához. Ellenkező esetben a változó nulla (kivéve, ha a SQL_DESC_INDICATOR_PTR és SQL_DESC_OCTET_LENGTH_PTR értékei ugyanazt a mutatót jelentik).

Ha az ARD SQL_DESC_INDICATOR_PTR mezője null mutató, az illesztőt megakadályozhatja, hogy visszaadja az oszlop NULL-e vagy sem. Ha az oszlop NULL, és SQL_DESC_INDICATOR_PTR null mutató, akkor az SQLSTATE 22002 (Indicator változó szükséges, de nem megadva) jelenik meg, amikor az illesztőprogram megpróbálja feltölteni a puffert egy SQLFetch vagy SQLFetchScroll hívás után. Ha az SQLFetch vagy SQLFetchScroll hívása nem SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO nem tér vissza, a puffer tartalma nem definiált.

A SQL_DESC_INDICATOR_PTR mező határozza meg, hogy a SQL_DESC_OCTET_LENGTH_PTR-re mutatott mező beállított-e. Ha egy oszlop adatértéke NULL, az illesztőprogram SQL_NULL_DATA-re állítja be az indikátor változót. A SQL_DESC_OCTET_LENGTH_PTR által mutatott mező ekkor nem van beállítva. Ha a lehívás során nem találkozik NULL értékkel, a SQL_DESC_INDICATOR_PTR-re mutatott puffer nullára van állítva, és az SQL_DESC_OCTET_LENGTH_PTR-re mutatott puffer az adat hosszára van állítva.

Ha az APD SQL_DESC_INDICATOR_PTR mező null mutató, az alkalmazás nem használhatja ezt a leíró rekordot NULL argumentumok megadására.

Ez a mező halasztott mező: Nem a beállításkor használják, hanem később a meghajtó használja az nullitás jelzésére (ARD-k esetén) vagy nullitás meghatározására (APD-k esetén).

SQL_DESC_LABEL [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az oszlopcímkét vagy címet. Ha az oszlopnak nincs címke, ez a változó tartalmazza az oszlop nevét. Ha az oszlop névtelen és címkézetlen, ez a változó üres stringet tartalmaz.

SQL_DESC_LENGTH [Mind]
Ez a SQLULEN rekordmező vagy a karakterlánc maximális vagy tényleges hossza a karakterekben, vagy egy bináris adattípus bájtokban. Ez a maximális hossz egy fix hosszúságú adattípus esetén, vagy a tényleges hossz egy változó hosszúságú adattípus esetén. Az értéke mindig kizárja azt a null-terminációs karaktert, amely a karakterláncot zárja. Olyan értékek esetén, amelyek típusa SQL_TYPE_DATE, SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP vagy valamelyik SQL intervallum adattípus, ennek a mezőnek a dátum vagy intervallum értékének karakter reprezentációjának hossza karakterben van.

A mező értéke eltérhet az ODBC 2*.x* által definiált "hosszúság" értéktől. További információért lásd a D mellékletet: Adattípusok.

SQL_DESC_LITERAL_PREFIX [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza azokat a karaktereket vagy karaktereket, amelyeket az illesztőprogram felismer egy literális előtagként ezen adattípusnak. Ez a változó üres stringet tartalmaz egy olyan adattípusra, amelyre literális előtag nem alkalmazható.

SQL_DESC_LITERAL_SUFFIX [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza azokat a karaktereket vagy karaktereket, amelyeket az illesztőprogram egy literális utótagként ismer fel ezen adattípus literálisának. Ez a változó üres stringet tartalmaz egy olyan adattípushoz, amelyre literális utótag nem alkalmazható.

SQL_DESC_LOCAL_TYPE_NAME [Megvalósítási leírások]
Ez az csak olvasható SQLCHAR * rekordmező bármilyen lokalizált (anyanyelvi) nevet tartalmaz az adattípushoz, amely eltérhet az adattípus normál nevétől. Ha nincs lokalizált név, akkor egy üres string jelenik meg. Ez a pálya kizárólag kiállítási célokra szolgál.

SQL_DESC_NAME [Megvalósítási leírások]
Ez az SQLCHAR * rekordmező egy sorleíróban tartalmazza az oszlop alias-t, ha alkalmazható. Ha az oszlop alias nem érvényes, az oszlop neve visszatér. Mindkét esetben a driver a SQL_DESC_UNNAMED mezőt SQL_NAMED-re állítja be, amikor a SQL_DESC_NAME mezőt állítja be. Ha nincs oszlopnév vagy oszlop alias, az illesztőprogram üres stringet ad vissza a SQL_DESC_NAME mezőben, és a SQL_DESC_UNNAMED mezőt SQL_UNNAMED-re állítja be.

Egy alkalmazás beállíthatja az IPD SQL_DESC_NAME mezőjét egy paraméternévre vagy aliasra, hogy név szerint meghatározza a tárolt eljárásparamétereket. (További információért lásd: Binding parameters by Name (Named Parameters).) Az IRD SQL_DESC_NAME mezője csak olvasható terület; Az SQLSTATE HY091 (Invalid descriptor field identifier) visszakerül, ha egy alkalmazás megpróbálja beállítani.

IPD-kben ez a mező definiálatlan, ha az illesztőprogram nem támogatja a nevelt paramétereket. Ha az illesztőprogram támogatja a nevelt paramétereket, és képes paramétereket leírni, akkor a paraméter neve megjelenik ebben a mezőben.

SQL_DESC_NULLABLE [Megvalósítási leírások]
IRD-kben ez az csak olvasható SQLSMALLINT rekordmező SQL_NULLABLE, ha az oszlop NULL értékeket kaphat, SQL_NO_NULLS ha az oszlop nem rendelkezik NULL értékekkel, vagy SQL_NULLABLE_UNKNOWN ha nem ismert, hogy az oszlop elfogadja-e NULL értékeket. Ez a mező az eredményhalmaz oszlopára vonatkozik, nem az alaposzlopra.

IPD-kben ez a mező mindig SQL_NULLABLE-re van beállítva, mert a dinamikus paraméterek mindig nullíthatók, és egy alkalmazás nem állíthatja be.

SQL_DESC_NUM_PREC_RADIX [Mindenki]
Ez az SQLINTEGER mező 2 értéket tartalmaz, ha a SQL_DESC_TYPE mezőben lévő adattípus közelítő numerikus adattípus, mivel a SQL_DESC_PRECISION mező tartalmazza a bitek számát. Ez a mező 10-es értéket tartalmaz, ha a SQL_DESC_TYPE mezőben lévő adattípus pontosan numerikus adattípus, mert a SQL_DESC_PRECISION mező tartalmazza a tizedes számjegyek számát. Ez a mező 0-ra van állítva minden nem numerikus adattípusra.

SQL_DESC_OCTET_LENGTH [Mindenki]
Ez a SQLLEN rekordmező tartalmazza egy karakterlánc vagy bináris adattípus bájtokban terjedő hosszát. Fix hosszúságú karakter vagy bináris típusok esetén ez a tényleges hossz bájtokban. Változó hosszúságú karakter vagy bináris típusok esetén ez a maximális hossz bájtokban. Ez az érték mindig kizár helyet a null-terminációs karakter számára a megvalósítási leírásokhoz, és mindig tartalmaz helyet az alkalmazásleírások null-terminációs karakterének is. Az alkalmazásadatok esetében ez a mező tartalmazza a puffer méretét. Az APD-k esetében ez a mező csak a kimeneti vagy bemeneti/kimeneti paraméterekre van definiálva.

SQL_DESC_OCTET_LENGTH_PTR [Alkalmazásleírások]
Ez a SQLLEN * rekordmező egy változóra mutat, amely tartalmazza egy dinamikus argumentus (paraméterleírók esetén) vagy egy kötött oszlopérték (sorleírók esetén) bájtokban terjedő teljes hosszát.

APD esetén ezt az értéket minden argumentumra figyelmen kívül hagyják, kivéve a karakterláncot és a binárist; ha ez a mező SQL_NTS-re mutat, akkor a dinamikus érvnek null-termináltnak kell lennie. Annak jelezésére, hogy egy határérték paraméter adat-végrehajtáskor paraméter lesz, egy alkalmazás beállítja ezt a mezőt az APD megfelelő rekordjában egy olyan változónak, amely a végrehajtáskor tartalmazza a SQL_DATA_AT_EXEC értéket vagy a SQL_LEN_DATA_AT_EXEC makró eredményét. Ha több ilyen mező létezik, SQL_DESC_DATA_PTR egy olyan értékre állítható, amely egyedien azonosítja a paramétert, hogy az alkalmazás eldöntse, melyik paramétert kérik.

Ha egy ARD OCTET_LENGTH_PTR mezője nullmutató, akkor a meghajtó nem adja vissza az oszlop hossz információját. Ha egy APD SQL_DESC_OCTET_LENGTH_PTR mezője nullmutató, akkor a meghajtó feltételezi, hogy a karakterláncok és bináris értékek null-lezárásúak. (A bináris értékeket nem szabad null-terminálni, hanem hosszt kell adni a csonkítás elkerülése érdekében.)

Ha az SQLFetch vagy SQLFetchScroll hívása, amely kitölti a mező által mutatott puffert, nem SQL_SUCCESS vagy SQL_SUCCESS_WITH_INFO nem tér vissza, a puffer tartalma nem definiált. Ez a pálya egy halasztott mező. Nem a beállításkor használják, hanem később a sofőr használja az adatok oktett hosszának meghatározására vagy jelzésére.

SQL_DESC_PARAMETER_TYPE [IPD-k]
Ez az SQLSMALLINT rekordmező bemeneti paraméterhez SQL_PARAM_INPUT, SQL_PARAM_INPUT_OUTPUT bemeneti/kimeneti paraméterhez, SQL_PARAM_OUTPUT kimeneti paraméterhez, SQL_PARAM_INPUT_OUTPUT_STREAM bemeneti/kimeneti streamelt paraméterhez, vagy SQL_PARAM_OUTPUT_STREAM-re van beállítva, bemenet/kimeneti paraméterre. Alapértelmezés szerint SQL_PARAM_INPUT-ra van állítva.

IPD esetén a mező alapértelmezetten SQL_PARAM_INPUT-re van beállítva, ha az IPD-t nem tölti fel automatikusan az illesztőprogram (az SQL_ATTR_ENABLE_AUTO_IPD kijelentés attribútuma SQL_FALSE). Egy alkalmazásnak be kell állítania ezt a mezőt az IPD-ben olyan paraméterekre, amelyek nem bemeneti paraméterek.

SQL_DESC_PRECISION [Mindenki]
Ez a SQLSMALLINT rekordmező tartalmazza a pontos numerikus típus számjegyeinek számát, a mantisszában lévő bitek számát (bináris pontosság) egy közelítő numerikus típusnál, vagy a SQL_TYPE_TIME, SQL_TYPE_TIMESTAMP vagy SQL_INTERVAL_SECOND adattípus törtmásodperc komponensének számjegyszámát. Ez a mező minden más adattípusra definiálatlan.

A terület értéke eltérhet az ODBC 2*.x* által meghatározott "pontosság" értékétől. További információért lásd a D mellékletet: Adattípusok.

SQL_DESC_ROWVER [Megvalósítási leírások]
Ez a SQLSMALLINTrecord mező jelzi, hogy a DBMS automatikusan módosítja-e egy oszlopot, amikor egy sort frissítenek (például egy "timestamp" típusú oszlop az SQL Server-ben). Ennek a rekordmezőnek az értéke SQL_TRUE-re van beállítva, ha az oszlop sorverziós oszlop, és egyébként SQL_FALSE. Ez az oszlop attribútuma hasonló ahhoz, mint az SQLSpecialColumns hívása az IdentifierType of SQL_ROWVER segítségével, hogy meghatározza, az oszlop automatikusan frissül-e.

SQL_DESC_SCALE [Mindenki]
Ez az SQLSMALLINT rekordmező tartalmazza a tizedes és numerikus adattípusok meghatározott skáláját. A mező minden más adattípusra definiálatlan.

A mező értéke eltérhet az ODBC 2*.x* által definiált "méret" értékétől. További információért lásd a D mellékletet: Adattípusok.

SQL_DESC_SCHEMA_NAME [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az alaptábla séma nevét, amely tartalmazza az oszlopot. A visszaküldési érték illetékesfüggő, ha az oszlop kifejezés, vagy ha az oszlop egy nézet része. Ha az adatforrás nem támogatja a sémákat, vagy a séma neve nem határozható meg, ez a változó üres láncot tartalmaz.

SQL_DESC_SEARCHABLE [IRD-k]
Ez az csak olvasható SQLSMALLINT rekordmező az alábbi értékek egyikére van állítva:

  • SQL_PRED_NONE, ha az oszlop nem használható egy WHERE záradékban. (Ez megegyezik az ODBC 2*.x* SQL_UNSEARCHABLE értékével.)

  • SQL_PRED_CHAR ha az oszlop használható egy WHERE klauzulában, de csak a LIKE predikátummal. (Ez ugyanaz, mint az ODBC 2*.x* SQL_LIKE_ONLY értéke.)

  • SQL_PRED_BASIC ha az oszlop használható egy WHERE záradékban az összes összehasonlító operátorral, kivéve a LIKE-ot. (Ez ugyanaz, mint az ODBC 2*.x* SQL_EXCEPT_LIKE értéke.)

  • SQL_PRED_SEARCHABLE az oszlop használható-e egy WHERE klauzulánál bármely összehasonlító operátorral.

SQL_DESC_TABLE_NAME [IRD-k]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza annak az alaptáblának a nevét, amely ezt az oszlopot tartalmazza. A visszaküldési érték illetékesfüggő, ha az oszlop kifejezés, vagy ha az oszlop egy nézet része.

SQL_DESC_TYPE [Mind]
Ez az SQLSMALLINT rekordmező minden adattípus tömör SQL vagy C adattípusát határozza meg, kivéve dátumidő- és intervallumadattípusokat. A dátumidőpont és intervallum adattípusok esetén ez a mező megadja a részletes adattípust, amely SQL_DATETIME vagy SQL_INTERVAL.

Amikor ez a mező SQL_DATETIME vagy SQL_INTERVAL tartalmaz, a SQL_DESC_DATETIME_INTERVAL_CODE mezőnek tartalmaznia kell a megfelelő alkódot a tömör típushoz. Dátumidő-adattípusok esetén SQL_DESC_TYPE tartalmaz SQL_DATETIME, a SQL_DESC_DATETIME_INTERVAL_CODE mező pedig egy alkódot tartalmaz a konkrét dátumidő-adattípushoz. Intervallum adattípusok esetén SQL_DESC_TYPE tartalmaz SQL_INTERVAL-et, és a SQL_DESC_DATETIME_INTERVAL_CODE mező tartalmaz egy alkódot az adott intervallum adattípushoz.

A SQL_DESC_TYPE és SQL_DESC_CONCISE_TYPE mezők értékei egymástól függenek. Minden alkalommal, amikor az egyik mezőt beállítják, a másikat is be kell állítani. SQL_DESC_TYPE beállítható, ha SQLSetDescField vagy SQLSetDescRec hívással működhet. SQL_DESC_CONCISE_TYPE beállíthatható SQLBindCol , SQLBindParameter, vagy SQLSetDescField hívással.

Ha SQL_DESC_TYPE tömör adattípusra van állítva, nem egy intervallum vagy dátum adattípus, akkor a SQL_DESC_CONCISE_TYPE mező ugyanarra az értékre van állítva, a SQL_DESC_DATETIME_INTERVAL_CODE mező pedig 0-ra van állítva.

Ha SQL_DESC_TYPE a verbose datetime vagy intervallum adattípusra van beállítva (SQL_DATETIME vagy SQL_INTERVAL), és a SQL_DESC_DATETIME_INTERVAL_CODE mező a megfelelő alkódra van állítva, akkor a SQL_DESC_CONCISE TYPE mező a megfelelő tömör típusra van állítva. Ha megpróbálod SQL_DESC_TYPE egy tömör datetime vagy intervallum típusra beállítani, az SQLSTATE HY021-et (Inconsistent descriptor information) adja.

Amikor a SQL_DESC_TYPE mezőt SQLBindCol, SQLBindParameter vagy SQLSetDescField hívással állítják be, a következő mezők a következő alapértelmezett értékekre vannak állítva, ahogy az alábbi táblázatban látható. Ugyanannak a rekordnak a többi mezőjének értékei meghatározatlanok.

Érték SQL_DESC_TYPE Más terek implicit módon beállítottak
SQL_CHAR, SQL_VARCHAR, SQL_C_CHAR, SQL_C_VARCHAR SQL_DESC_LENGTH 1-re van beállítva. SQL_DESC_PRECISION 0-ra van állítva.
SQL_DATETIME Ha SQL_DESC_DATETIME_INTERVAL_CODE SQL_CODE_DATE vagy SQL_CODE_TIME lesz, akkor SQL_DESC_PRECISION 0-ra van állítva. Amikor SQL_DESC_TIMESTAMP-re van beállítva, SQL_DESC_PRECISION 6-ra van állítva.
SQL_DECIMAL, SQL_NUMERIC, SQL_C_NUMERIC SQL_DESC_SCALE 0-ra van állítva. SQL_DESC_PRECISION a megfelelő adattípus megvalósítás által definiált pontosságra van állítva.

Az SQL to C: Numeric útmutatóért az SQL_C_NUMERIC érték kézi kötéséhez szükséges információkért.
SQL_FLOAT, SQL_C_FLOAT SQL_DESC_PRECISION a megvalósítás által definiált alapértelmezett precizitásra van beállítva SQL_FLOAT számára.
SQL_INTERVAL Amikor SQL_DESC_DATETIME_INTERVAL_CODE intervallum adattípusra van állítva, akkor 2-re van beállítva SQL_DESC_DATETIME_INTERVAL_PRECISION (az alapértelmezett intervallum vezető pontosság). Ha az intervallumnak van másodperckomponense, az SQL_DESC_PRECISION 6-ra van beállítva (az alapértelmezett intervallum másodpercek pontossága).

Amikor egy alkalmazás SQLSetDescField-et hív, hogy egy leíró mezőit állítson be a SQLSetDescRec helyett, az alkalmazásnak először meg kell jelentenie az adattípust. Amikor ez megtörténik, az előző táblázatban jelölt többi mező implicit módon be van állítva. Ha bármelyik implicitálisan beállított érték elfogadhatatlan, az alkalmazás ezután hívhatja az SQLSetDescField vagy SQLSetDescRec fájlokat, hogy explicit módon beállítsa az elfogadhatatlan értéket.

SQL_DESC_TYPE_NAME [Megvalósítási leírások]
Ez az csak olvasható SQLCHAR * rekordmező tartalmazza az adatforrástól függő típusnevet (például "CHAR", "VARCHAR" stb.). Ha az adattípus neve ismeretlen, ez a változó üres stringet tartalmaz.

SQL_DESC_UNNAMED [Megvalósítási leírások]
Ez a SQLSMALLINT rekordmező a sorleírásban az illesztőgép által SQL_NAMED vagy SQL_UNNAMED módra állítva állítja be a SQL_DESC_NAME mezőt. Ha a SQL_DESC_NAME mezőben oszlop alias található, vagy ha az oszlop alias nem érvényes, az illesztőprogram a SQL_DESC_UNNAMED mezőt SQL_NAMED-re állítja be. Ha egy alkalmazás az IPD SQL_DESC_NAME mezőjét paraméternévre vagy aliasra állítja, az illesztőprogram az IPD SQL_DESC_UNNAMED mezőjét SQL_NAMED-re állítja be. Ha nincs oszlopnév vagy oszlop alias, az illesztőprogram a SQL_DESC_UNNAMED mezőt SQL_UNNAMED-re állítja be.

Egy alkalmazás beállíthatja az IPD SQL_DESC_UNNAMED mezőjét SQL_UNNAMED-re. Egy illesztőprogram visszaadja a SQLSTATE HY091-et (Invalid descriptor field identifier), ha egy alkalmazás megpróbálja az IPD SQL_DESC_UNNAMED mezőjét SQL_NAMED-re állítani. Az IRD SQL_DESC_UNNAMED mezője csak olvasható; Az SQLSTATE HY091 (Invalid descriptor field identifier) visszakerül, ha egy alkalmazás megpróbálja beállítani.

SQL_DESC_UNSIGNED [Megvalósítási leírások]
Ez az csak olvasható SQLSMALLINT rekordmező SQL_TRUE-re van beállítva, ha az oszloptípus nem aláírt vagy nem numerikus, vagy SQL_FALSE, ha az oszloptípus aláírt.

SQL_DESC_UPDATABLE [IRD-k]
Ez az csak olvasható SQLSMALLINT rekordmező az alábbi értékek egyikére van állítva:

  • SQL_ATTR_READ_ONLY ha az eredményhalmaz oszlopa csak olvasható.

  • SQL_ATTR_WRITE ha az eredményhalmaz oszlopa olvasó-írás.

  • SQL_ATTR_READWRITE_UNKNOWN hogy nem tudjuk, hogy az eredményhalmaz oszlopa frissíthető-e vagy sem.

SQL_DESC_UPDATABLE az eredményhalmazban lévő oszlop frissíthetőségét írja le, nem az alaptáblázat oszlopát. Az alaptáblázatban lévő oszlop frissíthetősége, amelyen ez az eredményhalmaz oszlopa alapul, eltérhet a mezőben lévő értéktől. Az, hogy egy oszlop frissíthető-e, az adattípustól, felhasználói jogosultságoktól és magának az eredményhalmaznak a definíciójától függ. Ha nem világos, hogy egy oszlop frissíthető-e, SQL_ATTR_READWRITE_UNKNOWN vissza kell küldeni.

Következetesség ellenőrzések

Az illesztőprogram automatikusan végez konzisztenciás ellenőrzést minden alkalommal, amikor egy alkalmazás megad egy értéket az ARD, APD vagy IPD SQL_DESC_DATA_PTR mezőjéhez. Ha bármelyik mező inkonzisztens más mezőkkel, az SQLSetDescField visszaadja az SQLSTATE HY021-et (Inconsistent descriptor information). További információért lásd: "Consistency Check" az SQLSetDescRec fájlban.

Információ erről: Nézze
Egy oszlop kötése SQLBindCol függvény
Paraméter kötése SQLBindParameter függvény
Leíró mező megszerzése SQLGetDescField függvény
Több leíró mező megszerzése SQLGetDescRec Function
Több leíró mező beállítása SQLSetDescRec Function

Lásd még

ODBC-fejlécfájlok
ODBC API-referencia