Megosztás a következőn keresztül:


SQLSetDescRec függvény

megfelelőségi
Bevezetett verzió: ODBC 3.0 szabványmegfelelőség: ISO 92

összefoglaló
Az SQLSetDescRec függvény több leíró mezőt állít be, amelyek hatással vannak az oszlop- vagy paraméteradatokhoz kötött adattípusra és pufferre.

Szintaxis

  
SQLRETURN SQLSetDescRec(  
      SQLHDESC      DescriptorHandle,  
      SQLSMALLINT   RecNumber,  
      SQLSMALLINT   Type,  
      SQLSMALLINT   SubType,  
      SQLLEN        Length,  
      SQLSMALLINT   Precision,  
      SQLSMALLINT   Scale,  
      SQLPOINTER    DataPtr,  
      SQLLEN *      StringLengthPtr,  
      SQLLEN *      IndicatorPtr);  

Érvek

DescriptorHandle
[Bemenet] Leíró fogópont. Ez nem lehet IRD-leíró.

RecNumber
[Bemenet] A beállítandó mezőket tartalmazó leíró rekordot jelzi. A leíró rekordok száma 0, a 0 rekord pedig a könyvjelző rekord. Ennek az argumentumnak 0-nál egyenlőnek vagy nagyobbnak kell lennie. Ha RecNumber nagyobb, mint a SQL_DESC_COUNT értéke, SQL_DESC_COUNTis RecNumberértékére változik.

Típus
[Bemenet] Az az érték, amelyre a leíró rekord SQL_DESC_TYPE mezőjét be kell állítani.

Altípus
[Bemenet] Olyan rekordok esetében, amelyek típusa SQL_DATETIME vagy SQL_INTERVAL, ez az az érték, amelyre a SQL_DESC_DATETIME_INTERVAL_CODE mezőt be kell állítani.

hossz
[Bemenet] Az az érték, amelyre a leíró rekord SQL_DESC_OCTET_LENGTH mezőjét be szeretné állítani.

pontossági
[Bemenet] Az az érték, amelyre a leíró rekord SQL_DESC_PRECISION mezőjét be kell állítani.

Méretezési
[Bemenet] Az az érték, amelyre a leíró rekord SQL_DESC_SCALE mezőjét be kell állítani.

DataPtr
[Halasztott bemenet vagy kimenet] Az az érték, amelyre a leíró rekord SQL_DESC_DATA_PTR mezőjét be kell állítani. DataPtr- null mutatóra állíthatók be.

A DataPtr argumentum null mutatóra állítható, hogy a SQL_DESC_DATA_PTR mező null mutatóra legyen állítva. Ha a DescriptorHandle argumentum leírója egy ARD-hez van társítva, ez megszünteti az oszlop kötését.

StringLengthPtr
[Halasztott bemenet vagy kimenet] Az az érték, amelyre a leíró rekord SQL_DESC_OCTET_LENGTH_PTR mezőjét be kell állítani. StringLengthPtr null mutatóra állíthatja a SQL_DESC_OCTET_LENGTH_PTR mezőt null mutatóra.

IndicatorPtr
[Halasztott bemenet vagy kimenet] Az az érték, amelyre a leíró rekord SQL_DESC_INDICATOR_PTR mezőjét be kell állítani. IndicatorPtr null mutatóra állíthatja a SQL_DESC_INDICATOR_PTR mezőt null mutatóra.

Visszatér

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnosztika

Amikor SQLSetDescRec SQL_ERROR vagy SQL_SUCCESS_WITH_INFO ad vissza, a társított SQLSTATE-érték úgy érhető el, hogy meghívja SQLGetDiagRec egy SQL_HANDLE_DESC HandleType és DescriptorHandleHandle. Az alábbi táblázat a SQLSetDescRec által visszaadott SQLSTATE-értékeket sorolja fel, és a függvény kontextusában ismerteti azokat; a(z) "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATES-ek leírását. 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 Leírás
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
07009 Érvénytelen leíró index A RecNumber argumentum értéke 0, a DescriptorHandle pedig IPD-leíróra hivatkozik.

A RecNumber argumentum értéke 0-nál kisebb volt.

A RecNumber argumentum nagyobb volt, mint az adatforrás által támogatott oszlopok vagy paraméterek maximális száma, és a DescriptorHandle argumentum APD, IPD vagy ARD volt.

A RecNumber argumentum értéke 0, a DescriptorHandle argumentum pedig implicit módon lefoglalt APD-re hivatkozik. (Ez a hiba nem fordul elő explicit módon lefoglalt alkalmazásleíróval, mert nem ismert, hogy a explicit módon lefoglalt alkalmazásleíró APD vagy ARD-e 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.
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 társította, amelyhez egy aszinkron módon végrehajtó függvényt (nem ezt) hívtak meg, és a függvény meghívásakor továbbra is végrehajtódtak.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperationsvagy SQLSetPos az StatementHandle, amelyhez a DescriptorHandle társítva lett, és SQL_NEED_DATA lett visszaadva. Ezt a függvényt az összes adatvégrehajtási paraméter vagy oszlop adatküldése előtt hívták meg.

(DM) A DescriptorHandletársított kapcsolati leíróhoz aszinkron módon végrehajtó függvény lett meghívva. Ez az aszinkron függvény továbbra is a SQLSetDescRec függvény meghívásakor futott.

(DM) SQLExecute, SQLExecDirectvagy SQLMoreResults a DescriptorHandle társított utasításkezelők egyikéhez lett meghívva, és SQL_PARAM_DATA_AVAILABLE adott 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 Implementációs sorleíró nem módosítható A DescriptorHandle argumentum egy IRD-hez volt társítva.
HY021 Inkonzisztens leíró információk A Típus mező vagy a leíró SQL_DESC_TYPE mezőjéhez társított bármely más mező érvénytelen vagy konzisztens volt.

A konzisztencia-ellenőrzés során ellenőrzött leíróadatok nem konzisztensek. (Lásd a "Konzisztencia-ellenőrzések" című szakasz későbbi szakaszát.)
HY090 Érvénytelen sztring vagy puffer hossza (DM) Az illesztőprogram ODBC-2.x illesztő volt, a leíró ARD, a ColumnNumber argumentum értéke 0, a BufferLength argumentumhoz megadott érték pedig nem volt 4.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) További információ a felfüggesztett állapotról: SQLEndTran függvény.
HYT01 A kapcsolat időtúllépése lejárt A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A DescriptorHandle társított illesztőprogram nem támogatja a függvényt.

Megjegyzések

Egy alkalmazás meghívhatja SQLSetDescRec egyetlen oszlop vagy paraméter alábbi mezőinek beállításához:

  • SQL_DESC_TYPE

  • SQL_DESC_DATETIME_INTERVAL_CODE (SQL_DATETIME vagy SQL_INTERVAL típusú rekordok esetén)

  • SQL_DESC_OCTET_LENGTH

  • SQL_DESC_PRECISION

  • SQL_DESC_SCALE

  • SQL_DESC_DATA_PTR

  • SQL_DESC_OCTET_LENGTH_PTR

  • SQL_DESC_INDICATOR_PTR

Jegyzet

Ha az SQLSetDescRec hívása sikertelen, a RecNumber argumentum által azonosított leíró rekord tartalma nincs meghatározva.

Oszlop vagy paraméter kötésekor SQLSetDescRec lehetővé teszi a kötést befolyásoló mezők módosítását anélkül, hogy meghívná SQLBindCol vagy SQLBindParameter, vagy több hívást indíthat SQLSetDescField. SQLSetDescRec egy olyan leíró mezőit állíthatja be, amelyek jelenleg nem tartoznak utasításhoz. Vegye figyelembe, hogy SQLBindParameter több mezőt állít be, mint SQLSetDescRec, egy hívásban beállíthat mezőket apD-n és IPD-n is, és nem igényel leíró leírót.

Jegyzet

A SQL_ATTR_USE_BOOKMARKS utasításattribútumot mindig be kell állítani, mielőtt meghívja SQLSetDescRec egy RecNumber argumentummal a könyvjelzőmezők beállításához. Bár ez nem kötelező, erősen ajánlott.

Konzisztencia-ellenőrzések

Az illesztő automatikusan konzisztencia-ellenőrzést végez, amikor egy alkalmazás beállítja egy APD, ARD vagy IPD SQL_DESC_DATA_PTR mezőjét. Ha bármelyik mező nem felel meg a többi mezőnek, SQLSetDescRec az SQLSTATE HY021 (Inkonzisztens leíró információk) értéket adja vissza.

Amikor egy alkalmazás beállítja egy APD, ARD vagy IPD SQL_DESC_DATA_PTR mezőjét, az illesztőprogram ellenőrzi, hogy a SQL_DESC_TYPE mező értéke és az adott SQL_DESC_TYPE mezőre vonatkozó értékek érvényesek és konzisztensek-e. Ez az ellenőrzés mindig akkor történik, ha SQLBindParameter vagy SQLBindCol van meghívva, vagy ha SQLSetDescRec APD, ARD vagy IPD hívószámra van meghívva. Ez a konzisztencia-ellenőrzés a következő ellenőrzéseket tartalmazza a leíró mezőkön:

  • A SQL_DESC_TYPE mezőnek érvényes ODBC C- vagy SQL-típusnak vagy illesztőprogram-specifikus SQL-típusnak kell lennie. A SQL_DESC_CONCISE_TYPE mezőnek az érvényes ODBC C- vagy SQL-típusok egyikének, illetve egy illesztőprogram-specifikus C vagy SQL típusnak kell lennie, beleértve a tömör dátum- és időköztípusokat is.

  • Ha a SQL_DESC_TYPE rekordmező SQL_DATETIME vagy SQL_INTERVAL, a SQL_DESC_DATETIME_INTERVAL_CODE mezőnek az érvényes dátum- vagy időközkódok egyikének kell lennie. (Lásd a SQL_DESC_DATETIME_INTERVAL_CODE mező leírását SQLSetDescField.)

  • Ha a SQL_DESC_TYPE mező numerikus típust jelez, akkor a SQL_DESC_PRECISION és a SQL_DESC_SCALE mező érvényesnek lesz ellenőrizve.

  • Ha a SQL_DESC_CONCISE_TYPE mező egy idő- vagy időbélyeg adattípus, egy másodperces összetevővel rendelkező intervallumtípus vagy egy időösszetevővel rendelkező intervallumadat-típus, akkor a SQL_DESC_PRECISION mező érvényes másodperces pontosságúnak minősül.

  • Ha a SQL_DESC_CONCISE_TYPE intervallum adattípus, akkor a SQL_DESC_DATETIME_INTERVAL_PRECISION mező érvényes intervallumvezető pontossági értéknek minősül.

Az IPD SQL_DESC_DATA_PTR mezője általában nincs beállítva; az alkalmazás azonban kényszerítheti az IPD-mezők konzisztenciájának ellenőrzését. IRD-n nem végezhető konzisztencia-ellenőrzés. Az IPD SQL_DESC_DATA_PTR mezőjének értéke nincs ténylegesen tárolva, és az SQLGetDescField vagy SQLGetDescRechívásával nem kérhető le; a beállítás csak a konzisztencia-ellenőrzés kényszerítésére lett létrehozva.

További információ: Lát
Oszlop kötése SQLBindCol függvény
Paraméter kötése SQLBindParameter-függvény
Egyetlen leíró mező lekérése SQLGetDescField függvény
Több leíró mező lekérése SQLGetDescRec függvény
Egyetlen leíró mező beállítása SQLSetDescField függvény

Lásd még:

ODBC API-referencia
ODBC-fejlécfájlok