SQLNativeSql-függvény

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

Summary
Az SQLNativeSql visszaadja az SQL stringet, ahogy azt az illesztőgép módosította. Az SQLNativeSQL nem hajtja végre az SQL utasítást.

Syntax

  
SQLRETURN SQLNativeSql(  
     SQLHDBC        ConnectionHandle,  
     SQLCHAR *      InStatementText,  
     SQLINTEGER     TextLength1,  
     SQLCHAR *      OutStatementText,  
     SQLINTEGER     BufferLength,  
     SQLINTEGER *   TextLength2Ptr);  

Arguments

ConnectionHandle
[Bemenet] Kapcsolati leíró.

InStatement Text
[Bemenet] SQL szöveg string le kell fordítani.

TextLength1
[Bemenet] Hosszúság karakterben a *InStatementText szöveglánc esetében.

OutStatement Text
[Kimenet] Mutató egy pufferre, ahol vissza lehet adni a fordított SQL stringet.

Ha az OutStatementText NULL, a TextLength2Ptr továbbra is visszaadja az összes karakterszámot (kivéve a null-termination karaktert a karakteradatokhoz), amelyeket az OutStatementText által mutatott pufferben lehet visszaadni.

BufferLength
[Bemenet] A *OutStatementText pufferben lévő karakterek száma. A korábbi dokumentációs verziók tévesen azt sugallták, hogy ez a karakterszám akkor is egyenes, ha az *InStatementText értéke Unicode string (amikor az SQLNativeSqlW hívásakor). Nincs ilyen korlátozás. Az optimális interoperabilitás érdekében a driveríróknak számítaniuk kell arra, hogy bármilyen karakterszám továbbításra kerüljön ehhez a funkcióhoz, míg az alkalmazásíróknak mindig páros számot kell használniuk.

TextLength2Ptr
[Kimenet] Mutató egy pufferre, amelyben vissza lehet adni a *OutStatementText formátumban elérhető összes karakter számát (kivéve null-terminációt). Ha a visszaadható karakterek száma nagyobb, mint a BufferLength, a *OutStatementText lefordított SQL stringje lerövidítik BufferLength-re mínusz egy null-terminációs karakter hosszát.

Returns

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR vagy SQL_INVALID_HANDLE.

Diagnostics

Amikor az SQLNativeSql 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_DBC HandleType és egy ConnectionHandleHandle (HandleType) meghívásával érhető el. Az alábbi táblázat felsorolja az SQLNativeSql által gyakran visszaadott SQLSTATE értékeket, és mindegyiket ezen függvény kontextusában magyarázza el; 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 Az *OutStatementText puffer nem volt elég nagy ahhoz, hogy visszaadja az egész SQL stringet, ezért az SQL stringet lerövidítették. A csonkítatlan SQL string hosszát a *TextLength2Ptr-ben adják vissza. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.)
08003 A kapcsolat nincs megnyitva A ConnectionHandle nem volt csatlakoztatott állapotban.
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.
22007 Érvénytelen dátum/idő formátum * Az InStatementText tartalmazott egy escape záradékot, amelynek dátuma, ideje vagy időbélyegértéke érvénytelen.
24000 Érvénytelen kurzorállapot Az utasításban említett kurzor az eredményhalmaz kezdete előtt vagy az eredményhalmaz vége után helyezkedett el. Ezt a hibát nem feltétlenül visszaadja egy olyan driver, amelynek natív adatbázis-kurzor implementációja van.
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.
HY009 Érvénytelen null mutató használata (DM) *Az InStatementText null mutató volt.
HY010 Függvényütemezési hiba (DM) Egy aszinkron futó függvényt hívtak a ConnectionHandle számára, és még akkor futott, amikor ezt a függvényt hívták.
HY013 Memóriakezelési hiba A függvényhívás nem dolgozható fel, mert a mögöttes memóriaobjektumok nem érhetők el, esetleg a memóriahiány miatt.
HY090 Érvénytelen sztring vagy puffer hossza (DM) A TextLength1 érv kevesebb volt, mint 0, de nem egyenlő SQL_NTS-vel.
(DM) A BufferLength érv kevesebb volt, mint 0, és az OutStatementText érve nem volt null mutató.
HY109 Érvénytelen kurzorpozíció A kurzor jelenlegi sorát törölték vagy nem hozták le. Ezt a hibát nem feltétlenül visszaadja egy olyan driver, amelynek natív adatbázis-kurzor implementációja van.
HY117 A kapcsolat ismeretlen tranzakciós állapot miatt fel van függesztve. Csak a leválasztási és írásvédett függvények engedélyezettek. (DM) A felfüggesztett állapotról további információt az SQLEndTran függvényben talál.
HYT01 A kapcsolati időkorlát lejárt A kapcsolat időtúllépési időtartama lejárt, mielőtt az adatforrás válaszolt a kérésre. A kapcsolat időtúllépési időszaka az SQLSetConnectAttr SQL_ATTR_CONNECTION_TIMEOUT keresztül van beállítva.
IM001 Az illesztőprogram nem támogatja ezt a függvényt (DM) A ConnectionHandle csatlakoztatott illesztőprogram nem támogatja ezt a funkciót.

Comments

Az alábbiakban példák találhatók arra, hogy az SQLNativeSql mit adhat vissza a következő SQL bemeneti string esetén, amely tartalmazza a CONVERT skaláris függvényt. Tegyük fel, hogy az oszlop empid EGÉSZ típusú az adatforrásban:

SELECT { fn CONVERT (empid, SQL_SMALLINT) } FROM employee  

Egy Microsoft SQL Server illesztőprogramja a következő fordított SQL stringet adhatja vissza:

SELECT convert (smallint, empid) FROM employee  

Az ORACLE Server illesztőprogramja visszaadhatja a következő fordított SQL stringet:

SELECT to_number (empid) FROM employee  

Az Ingres illesztőprogramja visszaadhatja a következő fordított SQL stringet:

SELECT int2 (empid) FROM employee  

További információért lásd: Közvetlen végrehajtás és Előkészített végrehajtás.

None.