Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Megfelelőség
Bevezetett verzió: ODBC 1.0 szabványmegfelelőség: ISO 92
Összefoglalás
Az SQLExecDirect egy előkészíthető utasítást hajt végre a paraméterjelölő változók aktuális értékeinek használatával, ha vannak paraméterek az utasításban. Az SQLExecDirect a leggyorsabb módja egy SQL-utasítás egyszeri végrehajtásra való elküldésének.
Szemantika
SQLRETURN SQLExecDirect(
SQLHSTMT StatementHandle,
SQLCHAR * StatementText,
SQLINTEGER TextLength);
Arguments
StatementHandle
[Bemenet] Utasításkezelő.
Utasításszöveg
[Bemenet] Végrehajtandó SQL-utasítás.
TextLength
[Bemenet] *Utasításszöveg hossza karakterekben.
Visszatérítések
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE vagy SQL_PARAM_DATA_AVAILABLE.
Diagnostics
Amikor az SQLExecDirect SQL_ERROR vagy SQL_SUCCESS_WITH_INFO ad vissza, a társított SQLSTATE-érték az SQLGetDiagRec meghívásával érhető el a SQL_HANDLE_STMT HandleType és az StatementHandleleírójával. Az alábbi táblázat felsorolja az SQLExecDirect által gyakran visszaadott SQLSTATE-értékeket, és ismerteti azokat a függvény kontextusában; 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 | Error | Description |
|---|---|---|
| 01000 | Általános figyelmeztetés | Illesztőprogram-specifikus tájékoztató üzenet. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01001 | Kurzorművelet ütközése |
*
Az Utasításszöveg egy pozícióban lévő frissítési vagy törlési utasítást tartalmazott, és egyetlen sor vagy több sor sem lett frissítve vagy törölve. (Több sor frissítéséről további információt az SQLSetStmtAttr SQL_ATTR_SIMULATE_CURSOR attribútumának leírásában talál.) (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01003 | NULL érték a készletfüggvényben | Az Utasításszöveg argumentum egy halmazfüggvényt tartalmazott (például AVG, MAX, MIN és így tovább), de a DARAB függvény és a NULL argumentumértékek nem lettek kizárva a függvény alkalmazása előtt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01004 | Sztringadatok, jobb csonkolt | A bemeneti/kimeneti vagy kimeneti paraméterhez visszaadott sztring- vagy bináris adatok nem üres karakter vagy nem NULL bináris adatok csonkolását eredményezték. Ha sztringérték volt, akkor jobbról csonkolt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01006 | A jogosultság nincs visszavonva | * Az Utasításszöveg tartalmazott egy VISSZAVONÁS utasítást, és a felhasználó nem rendelkezik a megadott jogosultsággal. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01007 | A jogosultság nincs megadva | *Az Utasításszöveg egy GRANT utasítás volt, és a felhasználó nem kaphatta meg a megadott jogosultságot. |
| 01S02 | A beállítás értéke módosult | A megadott utasításattribútum a megvalósítási munkafeltételek miatt érvénytelen volt, ezért a rendszer ideiglenesen egy hasonló értéket helyettesített. (Az SQLGetStmtAttr meghívható annak meghatározásához, hogy mi az ideiglenesen helyettesített érték.) A helyettesítő érték az StatementHandle függvényre érvényes, amíg a kurzor be nem záródik, ekkor az utasítás attribútuma visszaáll az előző értékre. A módosítható utasításattribútumok a következők: SQL_ ATTR_CONCURRENCY SQL_ ATTR_CURSOR_TYPE SQL_ ATTR_KEYSET_SIZE SQL_ ATTR_MAX_LENGTH SQL_ ATTR_MAX_ROWS SQL_ ATTR_QUERY_TIMEOUT SQL_ ATTR_SIMULATE_CURSOR (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 01S07 | Tört csonkolás | A bemeneti/kimeneti vagy kimeneti paraméterhez visszaadott adatokat csonkoltuk, így a numerikus adattípus tört részét csonkoltuk, vagy egy idő, időbélyeg vagy intervallum adattípus időösszetevőjének törtrészét csonkoltuk. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 07002 | A DARAB mező helytelen | Az SQLBindParameterben megadott paraméterek száma kisebb volt, mint a *StatementTextben található SQL-utasítás paramétereinek száma. Az SQLBindParametert a ParameterValuePtr null mutatóra, StrLen_or_IndPtr nem SQL_NULL_DATA vagy SQL_DATA_AT_EXEC értékre, az InputOutputType értéke pedig nem SQL_PARAM_OUTPUT, így az SQLBindParameterben megadott paraméterek száma nagyobb volt, mint a *StatementTextben található SQL-utasítás paramétereinek száma. |
| 07006 | Korlátozott adattípus-attribútumok megsértése | A kötött paraméterHEZ tartozó SQLBindParameterValueType argumentuma által azonosított adatérték nem konvertálható az SQLBindParameterParameterType argumentuma által azonosított adattípusra. A SQL_PARAM_INPUT_OUTPUT vagy SQL_PARAM_OUTPUT kötött paraméter adatértéke nem konvertálható az SQLBindParameterValueType argumentuma által azonosított adattípusra. (Ha egy vagy több sor adatértékeit nem sikerült konvertálni, de egy vagy több sort sikeresen visszaadott, ez a függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 07007 | Korlátozott paraméterérték megsértése | A SQL_PARAM_INPUT_OUTPUT_STREAM paramétertípus csak olyan paraméterhez használható, amely adatokat küld és fogad részekben. Ehhez a paramétertípushoz nem engedélyezett bemeneti kötött puffer. Ez a hiba akkor fordul elő, ha a paraméter típusa SQL_PARAM_INPUT_OUTPUT, és ha az SQLBindParameterben megadott *StrLen_or_IndPtr nem egyenlő SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len) vagy SQL_DATA_AT_EXEC. |
| 07S01 | Az alapértelmezett paraméter használata érvénytelen | Az SQLBindParameterrel beállított paraméterérték SQL_DEFAULT_PARAM volt, és a megfelelő paraméter nem rendelkezik alapértelmezett értékkel. |
| 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. |
| 21S01 | Az értéklista beszúrása nem egyezik az oszloplistával | * Az Utasításszövegegy INSERT utasítást tartalmazott, és a beszúrandó értékek száma nem egyezett meg a származtatott tábla mértékével. |
| 21S02 | A származtatott tábla mértéke nem egyezik az oszloplistával | * Az StatementText tartalmazott egy CREATE VIEW utasítást, és a nem minősített oszloplista (az SQL-utasítás oszlopazonosító argumentumaiban a nézethez megadott oszlopok száma) több nevet tartalmazott, mint az SQL-utasítás lekérdezés-specifikáció argumentuma által meghatározott származtatott tábla oszlopainak száma. |
| 22001 | Sztringadatok, jobb csonkolás | Egy karakter vagy bináris érték oszlophoz való hozzárendelése nem üres vagy nem null bináris adatok csonkolását eredményezte. |
| 22002 | A mutatóváltozó kötelező, de nincs megadva | A NULL adatokat egy kimeneti paraméterhez kötötték, amelynek az SQLBindParameter által beállított StrLen_or_IndPtr null mutató volt. |
| 22003 | Numerikus érték a tartományon kívül |
*
Az StatementText tartalmazott egy SQL-utasítást, amely kötött numerikus paramétert vagy literált tartalmazott, és az érték miatt a szám egésze (a törtrész helyett) csonkolt a társított táblaoszlophoz rendelve. Egy vagy több bemeneti/kimeneti vagy kimeneti paraméter numerikus értékének (számként vagy sztringként) visszaadása miatt a szám egésze (a törtrész helyett) csonkolt lett volna. |
| 22007 | Érvénytelen dátum/idő formátum |
*
Az StatementText tartalmazott egy SQL-utasítást, amely kötött paraméterként tartalmazott dátum-, idő- vagy időbélyeg-struktúrát, a paraméter pedig érvénytelen dátum, idő vagy időbélyeg volt. Egy bemeneti/kimeneti vagy kimeneti paraméter egy dátum, idő vagy időbélyeg C struktúrához volt kötve, és a visszaadott paraméter értéke érvénytelen dátum, idő vagy időbélyeg volt. (A függvény SQL_SUCCESS_WITH_INFO ad vissza.) |
| 22008 | Datetime mező túlcsordul |
*
Az StatementText tartalmazott egy SQL-utasítást, amely tartalmazott egy datetime kifejezést, amely számításkor érvénytelen dátum-, idő- vagy időbélyeg-struktúrát eredményezett. Egy bemeneti/kimeneti vagy kimeneti paraméterhez kiszámított datetime kifejezés érvénytelen C-struktúrát eredményezett. |
| 22012 | Osztás nullával |
*
Az StatementText tartalmazott egy SQL-utasítást, amely egy olyan aritmetikai kifejezést tartalmazott, amely nullával való osztást okozott. Egy bemeneti/kimeneti vagy kimeneti paraméterre számított aritmetikai kifejezés nullával való osztást eredményezett. |
| 22015 | Intervallummező túlcsordult |
*Az Utasításszöveg tartalmazott egy pontos numerikus vagy intervallumparamétert, amely az sql-adattípus intervallummá alakításakor jelentős számjegyek elvesztését okozta. *Az Utasításszöveg egy több mezőt tartalmazó intervallumparamétert tartalmazott, amely egy oszlopban numerikus adattípussá alakítva nem volt ábrázolva a numerikus adattípusban. *Az StatementText paraméteradatokat tartalmazott, amelyeket egy intervallum SQL-típushoz rendeltek, és a C típus értékét nem ábrázolták az intervallum SQL-típusában. Ha egy bemeneti/kimeneti vagy kimeneti paramétert adott meg, amely pontos numerikus vagy intervallum TÍPUSÚ SQL-típus volt egy C intervallumtípushoz, jelentős számjegyek elvesztését okozta. Amikor egy bemeneti/kimeneti vagy kimeneti paramétert hozzárendeltek egy C intervallumstruktúrához, az adatok nem voltak ábrázolva az intervallum adatstruktúrájában. |
| 22018 | Érvénytelen karakterérték az öntött specifikációhoz |
*Az Utasításszöveg tartalmazott egy C típust, amely pontos vagy hozzávetőleges numerikus, dátum/ idő típusú vagy intervallum típusú volt; az oszlop SQL-típusa karakteres adattípus volt; és az oszlop értéke nem a kötött C típus érvényes literálja volt. Bemeneti/kimeneti vagy kimeneti paraméter visszaadásakor az SQL-típus pontos vagy hozzávetőleges numerikus, dátum- vagy intervallumadat-típus volt; a C típus SQL_C_CHAR; és az oszlop értéke nem a kötött SQL-típus érvényes literálja volt. |
| 22019 | Érvénytelen feloldó karakter | * Az StatementText tartalmazott egy OLYAN SQL-utasítást, amely tartalmazott egy LIKE-predikátumot a WHEREzáradékban, és az ESCAPE utáni escape karakter hossza nem volt egyenlő 1-zel. |
| 22025 | Érvénytelen feloldási sorozat | * Az StatementText tartalmazott egy SQL-utasítást, amely a WHERE záradékban a "LIKEpattern valueESCAPEescape character" karaktert tartalmazta, és a mintaértékben szereplő escape karaktert követő karakter nem a "%" vagy a "_" egyike volt. |
| 23000. | Integritási kényszer megsértése | * Az StatementText egy paramétert vagy literált tartalmazó SQL-utasítást tartalmazott. A paraméter értéke NULL volt a társított táblaoszlopBAN NOT NULL értékként definiált oszlophoz, ismétlődő értéket adott meg egy olyan oszlophoz, amely csak egyedi értékeket tartalmazott, vagy valamilyen más integritási korlátozást megsértett. |
| 24000 | Érvénytelen kurzorállapot | Az SQLFetch vagy az SQLFetchScroll egy kurzort helyez el az Utasításkezelőn. Ezt a hibát az illesztőprogram-kezelő adja vissza, ha az SQLFetch vagy az SQLFetchScroll nem adott vissza SQL_NO_DATA, és ha az SQLFetch vagy az SQLFetchScroll visszaadta SQL_NO_DATA. A kurzor nyitva volt, de nem volt elhelyezve az Utasításkezelőben. * Az Utasításszöveg egy pozícióban lévő frissítési vagy törlési utasítást tartalmazott, a kurzor pedig az eredményhalmaz kezdete vagy az eredményhalmaz vége előtt volt. |
| 34000 | Érvénytelen kurzornév | * Az Utasításszöveg egy pozícióban lévő frissítési vagy törlési utasítást tartalmazott, és a végrehajtott utasítás által hivatkozott kurzor nem volt megnyitva. |
| 3D000 | Érvénytelen katalógusnév | Az Utasításszövegben megadott katalógusnév érvénytelen volt. |
| 3F000 | Érvénytelen sémanév | Az Utasításszövegben megadott sémanév érvénytelen volt. |
| 40001 | Szerializálási hiba | A tranzakció egy erőforrás holtpontja miatt lett visszaállítva egy másik tranzakcióval. |
| 40003 | Az utasítás befejezése ismeretlen | A társított kapcsolat a függvény végrehajtása során meghiúsult, és a tranzakció állapota nem határozható meg. |
| 42000 | Szintaxishiba vagy hozzáférés-megsértés |
*
Az StatementText olyan SQL-utasítást tartalmazott, amely nem készült el, vagy szintaxishibát tartalmazott. A felhasználónak nem volt engedélye a *StatementTextben található SQL-utasítás végrehajtására. |
| 42S01 | Az alaptábla vagy nézet már létezik | * Az Utasításszöveg tartalmazott egy CREATE TABLE vagy CREATE VIEW utasítást, és a megadott táblanév vagy nézetnév már létezik. |
| 42S02 | Az alaptábla vagy nézet nem található |
*
Az Utasításszövegtartalmazott egy DROP TABLE vagy EGY DROP VIEW utasítást, és a megadott táblanév vagy nézetnév nem létezik. * Az Utasításszöveg egy ALTER TABLE utasítást tartalmazott, és a megadott táblanév nem létezik. * Az Utasításszöveg tartalmazott egy CREATE VIEW utasítást, és a lekérdezési specifikáció által definiált táblanév vagy nézetnév nem létezik. * Az Utasításszöveg tartalmazott egy CREATE INDEX utasítást, és a megadott táblanév nem létezik. * Az StatementText tartalmazott egy GRANT vagy REVOKE utasítást, és a megadott táblanév vagy nézetnév nem létezik. * Az Utasításszöveg tartalmazott egy SELECT utasítást, és a megadott táblanév vagy nézetnév nem létezik. * Az Utasításszövegtartalmazott egy DELETE, INSERT vagy UPDATE utasítást, és a megadott táblanév nem létezik. * Az Utasításszöveg tartalmazott egy CREATE TABLE utasítást, és a kényszerben megadott tábla (a létrehozott táblától eltérő táblára hivatkozva) nem létezik. * Az Utasításszöveg tartalmazott egy CREATE SCHEMA utasítást, és a megadott táblanév vagy nézetnév nem létezik. |
| 42S11 | Az index már létezik |
*
Az StatementText tartalmazott egy CREATE INDEX utasítást, és a megadott indexnév már létezik. * Az Utasításszöveg tartalmazott egy CREATE SCHEMA utasítást, és a megadott indexnév már létezik. |
| 42S12 | Az index nem található | * Az StatementText tartalmazott egy DROP INDEX utasítást, és a megadott indexnév nem létezik. |
| 42S21 | Az oszlop már létezik | * Az StatementTextegy ALTER TABLE utasítást tartalmazott, és az ADD záradékban megadott oszlop nem egyedi, és nem azonosítja az alaptábla meglévő oszlopát. |
| 42S22 | Az oszlop nem található |
*
Az Utasításszöveg tartalmazott egy CREATE INDEX utasítást, és az oszloplistában megadott egy vagy több oszlopnév nem létezik. * Az StatementText tartalmazott egy GRANT vagy REVOKE utasítást, és nem létezik egy megadott oszlopnév. * Az Utasításszövegegy SELECT, DELETE, INSERT vagy UPDATE utasítást tartalmazott, és egy megadott oszlopnév nem létezik. * Az Utasításszöveg tartalmazott egy CREATE TABLE utasítást, és a kényszerben megadott oszlop (a létrehozott táblától eltérő táblára hivatkozva) nem létezik. * Az Utasításszöveg tartalmazott egy CREATE SCHEMA utasítást, és egy megadott oszlopnév nem létezik. |
| 44000 | A CHECK OPTION megsértése | Az Utasításszöveg argumentum tartalmazott egy INSERT utasítást, amelyet egy megtekintett táblán vagy egy olyan táblán hajtottak végre, amely a WITH CHECK OPTION beállítással létrehozott megtekintett táblából származik, így az INSERT utasítás által érintett egy vagy több sor már nem jelenik meg a megtekintett táblában. Az Utasításszöveg argumentum tartalmazott egy UPDATE utasítást, amelyet egy megtekintett táblán vagy a megtekintett táblából származó, a WITH CHECK OPTION beállítással létrehozott táblán hajtottak végre, így az UPDATE utasítás által érintett egy vagy több sor többé nem lesz jelen a megtekintett táblában. |
| 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. |
| HY008 | Művelet megszakítva | Az aszinkron feldolgozás engedélyezve lett a StatementHandle-ben. A függvény meghívása megtörtént, és a végrehajtás befejezése előtt az SQLCancel vagy az SQLCancelHandle meghívása megtörtént az Utasításkezelőben. Ezután a függvény ismét meghívásra került az Utasításkezelőben. A függvény meghívása megtörtént, és a végrehajtás befejezése előtt az SQLCancel vagy az SQLCancelHandle egy másik szálról lett meghívva a StatementHandle-ra egy többszálas alkalmazásból. |
| HY009 | Érvénytelen null mutató használata | (DM) *StatementText null mutató volt. |
| 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 továbbra is az SQLExecDirect függvény meghívásakor lett végrehajtva. (DM) SQLExecute, SQLExecDirect vagy SQLMoreResults lett meghívva az Utasításkezelőhöz , és SQL_PARAM_DATA_AVAILABLE ad vissza. Ez a függvény az összes streamelt paraméter adatainak lekérése előtt lett meghívva. (DM) Egy aszinkron módon végrehajtó függvény (nem ez) lett meghívva az StatementHandle-hez , és a függvény meghívásakor továbbra is végrehajtó volt. (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) A TextLength argumentum kisebb vagy egyenlő, mint 0, de nem egyenlő SQL_NTS. Az SQLBindParameterrel beállított paraméterérték null mutató volt, és a paraméter hossza nem 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM vagy kisebb, mint SQL_LEN_DATA_AT_EXEC_OFFSET. Az SQLBindParameterrel beállított paraméterérték nem null mutató volt; a C adattípus SQL_C_BINARY vagy SQL_C_CHAR; és a paraméter hosszértéke kisebb volt, mint 0, de nem volt SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM vagy kisebb, mint SQL_LEN_DATA_AT_EXEC_OFFSET. Az SQLBindParameter által kötött paraméterhossz értéke SQL_DATA_AT_EXEC; az SQL-típus vagy SQL_LONGVARCHAR, SQL_LONGVARBINARY vagy hosszú adatforrás-specifikus adattípus volt; és az SQLGetInfo SQL_NEED_LONG_DATA_LEN adattípusa "Y" volt. |
| HY105 | Érvénytelen paramétertípus | Az SQLBindParameterInputOutputType argumentumához megadott érték SQL_PARAM_OUTPUT, a paraméter pedig egy bemeneti paraméter volt. |
| HY109 | Érvénytelen kurzorpozíció | * Az StatementText egy pozícióban lévő frissítési vagy törlési utasítást tartalmazott, és a kurzor ( az SQLSetPos vagy az SQLFetchScroll által) egy olyan sorban volt elhelyezve, amelyet töröltek vagy nem sikerült beolvasni. |
| 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 illesztőprogram vagy az adatforrás nem támogatja a SQL_ATTR_CONCURRENCY és SQL_ATTR_CURSOR_TYPE utasításattribútumok aktuális beállításainak kombinációját. A SQL_ATTR_USE_BOOKMARKS utasítás attribútuma SQL_UB_VARIABLE lett beállítva, és a SQL_ATTR_CURSOR_TYPE utasítás attribútum olyan kurzortípusra lett beállítva, amelyhez az illesztőprogram nem támogatja a könyvjelzőket. |
| HYT00 | Az időtúllépés lejárt | A lekérdezés időtúllépési időtartama lejárt, mielőtt az adatforrás visszaadta az eredményhalmazt. Az időtúllépési időszak az SQLSetStmtAttr SQL_ATTR_QUERY_TIMEOUT keresztül van beállítva. |
| HYT01 | A kapcsolat időtúllépés miatt megszakadt | 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) Az StatementHandle-hez társított illesztőprogram nem támogatja a függvényt. |
| IM017 | A lekérdezés aszinkron értesítési módban le van tiltva | Az értesítési modell használata esetén a lekérdezés le van tiltva. |
| IM018 | Az SQLCompleteAsync nem lett meghívva az előző aszinkron művelet végrehajtásához ezen a leírón. | Ha a leíró előző függvényhívása SQL_STILL_EXECUTING ad vissza, és ha az értesítési mód engedélyezve van, az SQLCompleteAsync-et a leírón kell meghívni a művelet utófeldolgozásához és befejezéséhez. |
Comments
Az SQLExecDirect meghívásával SQL-utasítást küldhet az adatforrásnak. A közvetlen végrehajtásról további információt a Közvetlen végrehajtás című témakörben talál. Az illesztőprogram módosítja az utasítást úgy, hogy az adatforrás által használt SQL-formát használja, majd elküldi az adatforrásnak. Az illesztő különösen módosítja az SQL bizonyos funkcióinak definiálásához használt feloldóütemezéseket. A menekülési sorozatok szintaxisát lásd: Escape Sequences in ODBC.
Az SQL-utasításban egy vagy több paraméterjelölő is szerepelhet. Paraméterjelölő hozzáadásához ágyazzon be egy kérdőjelet (?) az SQL-utasításba a megfelelő pozícióban. A paraméterekkel kapcsolatos információkért lásd: Utasításparaméterek.
Miután sikeresen meghívta az SQLExecDirectet , amely eredményhalmazt ad vissza (például EGY SELECT utasításból), az utasításkezelő az eredményhalmaz első sora elé kerül. Ezután meghívhatja az SQLFetchet vagy az SQLFetchScrollt a sorok lekéréséhez, vagy meghívhatja az SQLRowCountot az INSERT, UPDATE vagy DELETE utasítások érintett sorainak számának meghatározásához.
Ha az SQL-utasítás SELECT utasítás , és az SQLSetCursorName nevet használta a kurzor utasításhoz való társításához, az illesztőprogram a megadott kurzort használja. Ellenkező esetben az illesztőprogram létrehoz egy kurzornevet.
Ha az adatforrás manuális véglegesítési módban van (explicit tranzakcióindítást igényel), és a tranzakció még nem lett elindítva, az illesztőprogram az SQL-utasítás elküldése előtt kezdeményez egy tranzakciót. További információ: Manual-Commit mód.
Ha az SQLExecDirect használatával küld el egy COMMIT vagy ROLLBACK utasítást, az nem lesz együttműködő a DBMS-termékek között. Tranzakció véglegesítéséhez vagy visszaállításához hívja meg az SQLEndTrant.
Ha az SQLExecDirect adatvégrehajtási paraméterrel találkozik, SQL_NEED_DATA ad vissza. Küldje el az adatokat az SQLParamData és az SQLPutData használatával. Lásd: SQLBindParameter, SQLParamData, SQLPutData és Sending Long Data.
Ha az SQLExecDirect olyan keresési, beszúrási vagy törlési utasítást hajt végre, amely nem érinti az adatforrás egyik sorát sem, az SQLExecDirect hívása SQL_NO_DATA ad vissza.
Ha a SQL_ATTR_PARAMSET_SIZE utasítás attribútum értéke nagyobb, mint 1, és az SQL-utasítás legalább egy paraméterjelölőt tartalmaz, az SQLExecDirect az SQLBindParameter hívásában a ParameterValuePointer argumentum által hivatkozott tömbök minden paraméterérték-készletéhez egyszer végrehajtja az SQL-utasítást. További információ: Paraméterértékek tömbjei.
Ha a könyvjelzők be vannak kapcsolva, és olyan lekérdezést hajtanak végre, amely nem támogatja a könyvjelzőket, az illesztőprogramnak meg kell kísérelnie a környezetet olyanra kényszeríteni, amely támogatja a könyvjelzőket egy attribútumérték módosításával és az SQLSTATE 01S02 visszaadásával (a beállítás értéke megváltozott). Ha az attribútum nem módosítható, az illesztőnek SQLSTATE HY024-et (érvénytelen attribútumértéket) kell visszaadnia.
Megjegyzés:
Kapcsolatkészletezés használatakor ne hajtson végre olyan SQL-utasításokat, amelyek módosítják az adatbázist vagy az adatbázis környezetét, például az SQL Server USEadatbázis-utasítását , amely módosítja az adatforrás által használt katalógust.
Kódpélda
Lásd: SQLBindCol, SQLGetData és ODBC-mintaprogram.
Kapcsolódó funkciók
| Információ erről: | Nézze |
|---|---|
| Puffer kötése egy eredményhalmaz oszlopához | SQLBindCol függvény |
| Utasításfeldolgozás megszakítása | SQLCancel függvény |
| Véglegesítési vagy visszaállítási művelet végrehajtása | SQLEndTran függvény |
| Előkészített SQL-utasítás végrehajtása | SQLExecute függvény |
| Több adatsor beolvasása | SQLFetch függvény |
| Adatblokk beolvasása vagy egy eredményhalmaz görgetése | SQLFetchScroll függvény |
| Kurzornév visszaadása | SQLGetCursorName függvény |
| Adatoszlop egy részének vagy egészének beolvasása | SQLGetData függvény |
| A következő paraméter visszaadása az adatok elküldéséhez: | SQLParamData függvény |
| Utasítás előkészítése végrehajtáshoz | SQLPrepare függvény |
| Paraméteradatok küldése végrehajtási időpontban | SQLPutData függvény |
| Kurzornév beállítása | SQLSetCursorName függvény |
| Utasításattribútum beállítása | SQLSetStmtAttr függvény |