SQLGetStmtAttr függvény

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

Summary
Az SQLGetStmtAttr egy utasítás attribútumának aktuális beállítását adja vissza.

Note

További információért arról, hogy a Driver Manager mire térképezi ezt a függvényt, amikor egy ODBC 3. x alkalmazás ODBC 2-vel működik. x illesztőprogram, lásd : Alkalmazások visszafelé kompatibilitásának leképezési helyettesítő függvényei.

Syntax

  
SQLRETURN SQLGetStmtAttr(  
     SQLHSTMT        StatementHandle,  
     SQLINTEGER      Attribute,  
     SQLPOINTER      ValuePtr,  
     SQLINTEGER      BufferLength,  
     SQLINTEGER *    StringLengthPtr);  

Arguments

StatementHandle
[Bemenet] Utasításkezelő.

Attribútum
[Bemenet] Attribútumot a visszahíváshoz.

ValuePtr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni az attribútumban megadott attribútum értékét.

Ha a ValuePtr NULL, akkor a StringLengthPtr továbbra is visszaadja a ValuePtr által mutatott pufferben elérhető összes bájtszámot (kivéve a null-terminációs karaktert a karakteradatokhoz).

BufferLength
[Bemenet] Ha az Attribútum egy ODBC által definiált attribútum, és a ValuePtr egy karakterláncra vagy bináris pufferre mutat, akkor ennek az argumentumnak a *ValuePtr hosszúságának kell lennie. Ha az attribútum ODBC által definiált attribútum, és a *ValuePtr egy egész szám, akkor a BufferLength-et figyelmen kívül hagyjuk. Ha a *ValuePtr értéke Unicode string (amikor az SQLGetStmtAttrW hívják), akkor a BufferLength argumentusnak páros számnak kell lennie.

Ha az Attribútum illesztőgép által definiált attribútum, az alkalmazás a Driver Manager számára a BufferLength argumentus beállításával jelzi az attribútum természetét. A BufferLength a következő értékeket kaphatja:

  • Ha a *ValuePtr egy karakterláncra mutató, 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(hosszúság) makró eredményét a BufferLength mappába 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 SQL_IS_POINTER.

  • Ha a *ValuePtr fix hosszúságú adattípust tartalmaz, akkor a BufferLength vagy SQL_IS_INTEGER, vagy SQL_IS_UINTEGER, ahogy megfelelően.

StringLengthPtr
[Kimenet] Egy puffermutató, amelyben vissza lehet adni a * ValuePtr-ben elérhető összes bájt számot (a null-terminációs karakter kivételével). Ha az attribútumérték egy karakterlánc, és a visszaadható bájtok száma nagyobb, mint a BufferLength, akkor a *ValuePtr adatai a null-terminációs karakter hosszát levonva BufferLength-re rövidítik, és a meghajtó null-terminálja őket.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLGetStmtAttr SQL_ERROR vagy SQL_SUCCESS_WITH_INFO visszaadja az SQLGetStmtAttr, akkor egy hozzárendelt SQLSTATE értéket lehet megszerezni, ha meghívjuk az SQLGetDiagRec-et egy SQL_HANDLE_STMT HandleTypeés egyHandleType (StatementHandle) segítségével. Az alábbi táblázat felsorolja az SQLGetStmtAttr által gyakran visszaadott SQLSTATE értékeket, és mindegyiket elmagyarázza ezen függvény kontextusában; a "(DM)" jelölés megelőzi a Driver Manager által visszaadott SQLSTATE-leírásokat. Az egyes SQLSTATE-értékekhez társított visszatérési kód SQL_ERROR, kivéve, ha másként van feltüntetve.

SQLSTATE Hiba Description
01000 Általános figyelmeztetés Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
01004 Sztringadatok, jobb csonkolt A *ValuePtr-ben visszaadott adatokat úgy vágták le, hogy BufferLength mínusz egy null-terminációs karakter hossza. A csonkolatlan string értékének hosszát a *StringLengthPtr-ben adjuk vissza. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
24000 Érvénytelen kurzorállapot Az Attribútum érvelése SQL_ATTR_ROW_NUMBER volt, és a kurzor nem volt nyitva, vagy a kurzor az eredményhalmaz kezdete előtt vagy az eredményhalmaz vége után helyezkedett el.
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 argumentumban 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 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 futott, amikor az SQLGetStmtAttr függvényt hívták.

(DM) Egy aszinkron futó függvényt hívtak a StatementHandle számára, és még akkor futott, amikor ezt a függvényt hívták.

(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) *ValuePtr egy karakterlánc, és a BufferLength nullánál kisebb volt, de nem egyenlő SQL_NTS-vel.
HY092 Érvénytelen attribútum/opcióazonosító Az Attribútum argumentumhoz megadott érték nem volt érvényes az illesztőprogram által támogatott ODBC verzióra.
HY109 Érvénytelen kurzorpozíció Az attribútumok érve SQL_ATTR_ROW_NUMBER volt, és a sort törölték, vagy nem lehetett lehozni.
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 Az Attribútum argumentumhoz megadott érték érvényes ODBC utasítás attribútum volt az illesztőprogram által támogatott ODBC verzióra, de az illesztőprogram nem támogatta.
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 StatementHandle illesztőprogramja nem támogatja ezt a funkciót.

Comments

Az utasítás attribútumokról általános információért lásd: Állítás attribútumok.

Az SQLGetStmtAttr hívás a *ValuePtr formátumban visszaadja az attribútumban megadott utasítás attribútumának értékét. Ez az érték lehet SQLULEN érték vagy null-lezárt karakterlánc. Ha az érték SQLULEN érték, egyes illesztőprogramok csak a puffer alsó 32 vagy 16 bites részét írják, és a magasabb rendű bitet változatlanul hagyják. Ezért az alkalmazásoknak SQLULEN pufferét kell használniuk, és az értéket 0-ra inicializálniuk, mielőtt ezt a függvényt hívják. Emellett a BufferLength és a StringLengthPtr argumentumokat sem használják. Ha az érték nullvéges string, az alkalmazás megadja a BufferLength argumentumban a maximális string hosszát, és az illesztőprogram visszaadja az adott string hosszát a *StringLengthPtr pufferben.

Hogy az SQLGetStmtAttr-t hívó alkalmazások működhessenek az ODBC 2-vel. x drivers esetén az SQLGetStmtAttr hívása a Driver Manager a SQLGetStmtOption néven van leképezve.

Az alábbi utasítás attribútum csak olvasható, így az SQLGetStmtAttr letöltheti, de az SQLSetStmtAttr nem állította be őket:

  • SQL_ATTR_IMP_PARAM_DESC

  • SQL_ATTR_IMP_ROW_DESC

  • SQL_ATTR_ROW_NUMBER

A beállításra és visszakeresésre alkalmas attribútumok listájáért lásd: SQLSetStmtAttr.

Információ erről: Nézze
Kapcsolati attribútum beállításának visszaadása SQLGetConnectAttr függvény
Kapcsolati attribútumot beállítás SQLSetConnectAttr függvény
Utasításattribútum beállítása SQLSetStmtAttr függvény