Megosztás:


SQLExecDirect függvény

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.

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

ODBC API-referencia
ODBC-fejlécfájlok