Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.
Kapcsolódó funkciók
None.