Delen via


Functie SQLExecDirect

Conformiteit
Versie geïntroduceerd: NALEVING van ODBC 1.0-standaarden: ISO 92

Samenvatting
SQLExecDirect voert een preparable instructie uit met behulp van de huidige waarden van de parametermarkeringsvariabelen als er parameters aanwezig zijn in de instructie. SQLExecDirect is de snelste manier om een SQL-instructie in te dienen voor eenmalige uitvoering.

Syntaxis

  
SQLRETURN SQLExecDirect(  
     SQLHSTMT     StatementHandle,  
     SQLCHAR *    StatementText,  
     SQLINTEGER   TextLength);  

Arguments

StatementHandle
[Invoer] Instructiehandgreep.

StatementText
[Invoer] SQL-instructie die moet worden uitgevoerd.

TextLength
[Invoer] Lengte van *StatementText in tekens.

Retouren

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_NEED_DATA, SQL_STILL_EXECUTING, SQL_ERROR, SQL_NO_DATA, SQL_INVALID_HANDLE of SQL_PARAM_DATA_AVAILABLE.

Diagnostics

Wanneer SQLExecDirect SQL_ERROR of SQL_SUCCESS_WITH_INFO retourneert, kan een bijbehorende SQLSTATE-waarde worden verkregen door SQLGetDiagRec aan te roepen met een HandleType van SQL_HANDLE_STMT en een Handle of StatementHandle. De volgende tabel bevat de SQLSTATE-waarden die vaak worden geretourneerd door SQLExecDirect en legt elk uit in de context van deze functie; de notatie (DM)' voorafgaat aan de beschrijvingen van SQLSTATEs die worden geretourneerd door Driver Manager. De retourcode die is gekoppeld aan elke SQLSTATE-waarde is SQL_ERROR, tenzij anders vermeld.

SQLSTATE Fout Description
01000 Algemene waarschuwing Stuurprogrammaspecifiek informatiebericht. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
01001 Conflict met cursorbewerking * StatementText bevatte een positioned update- of delete-instructie en er zijn geen rijen of meer dan één rij bijgewerkt of verwijderd. (Zie de beschrijving van het kenmerk SQL_ATTR_SIMULATE_CURSOR inSQLSetStmtAttr voor meer informatie over updates voor meer dan één rij.)

(Functie retourneert SQL_SUCCESS_WITH_INFO.)
01003 NULL-waarde geëlimineerd in setfunctie Het argument StatementText bevat een setfunctie (zoals AVG, MAX, MIN, enzovoort), maar niet de functie COUNT set en NULL-argumentwaarden zijn geëlimineerd voordat de functie werd toegepast. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
01004 Tekenreeksgegevens, rechts afgekapt Tekenreeks- of binaire gegevens die worden geretourneerd voor een invoer-/uitvoer- of uitvoerparameter hebben geresulteerd in het afkappen van niet-lege tekens of niet-NULL binaire gegevens. Als het een tekenreekswaarde was, is deze rechts afgekapt. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
01006 Bevoegdheid niet ingetrokken * StatementText bevatte een REVOKE-instructie en de gebruiker beschikt niet over de opgegeven bevoegdheid. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
01007 Bevoegdheid niet verleend *StatementText was een GRANT-instructie en de gebruiker kan de opgegeven bevoegdheid niet krijgen.
01S02 Optiewaarde gewijzigd Een opgegeven instructiekenmerk is ongeldig vanwege de arbeidsomstandigheden van de implementatie, dus een vergelijkbare waarde is tijdelijk vervangen. (SQLGetStmtAttr kan worden aangeroepen om te bepalen wat de tijdelijk vervangende waarde is.) De vervangende waarde is geldig voor de StatementHandle totdat de cursor is gesloten, waarna het instructiekenmerk wordt teruggezet naar de vorige waarde. De instructiekenmerken die kunnen worden gewijzigd, zijn:

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

(Functie retourneert SQL_SUCCESS_WITH_INFO.)
01S07 Breukafkapping De gegevens die worden geretourneerd voor een invoer-/uitvoer- of uitvoerparameter, zijn afgekapt, zodat het breukgedeelte van een numeriek gegevenstype is afgekapt of het breukgedeelte van het tijdgedeelte van een tijds-, tijdstempel- of intervalgegevenstype is afgekapt.

(Functie retourneert SQL_SUCCESS_WITH_INFO.)
07002 VELD AANTAL is onjuist Het aantal parameters dat is opgegeven in SQLBindParameter , is kleiner dan het aantal parameters in de SQL-instructie in *StatementText.

SQLBindParameter is aangeroepen met ParameterValuePtr ingesteld op een null-aanwijzer, StrLen_or_IndPtr niet ingesteld op SQL_NULL_DATA of SQL_DATA_AT_EXEC, en InputOutputType is niet ingesteld op SQL_PARAM_OUTPUT, zodat het aantal parameters dat is opgegeven in SQLBindParameter groter is dan het aantal parameters in de SQL-instructie in *StatementText.
07006 Schending van kenmerk van beperkt gegevenstype De gegevenswaarde die is geïdentificeerd door het argument ValueType in SQLBindParameter voor de afhankelijke parameter, kan niet worden geconverteerd naar het gegevenstype dat is geïdentificeerd door het argument ParameterType in SQLBindParameter.

De gegevenswaarde die wordt geretourneerd voor een parameter die is gebonden als SQL_PARAM_INPUT_OUTPUT of SQL_PARAM_OUTPUT kan niet worden geconverteerd naar het gegevenstype dat is geïdentificeerd door het argument ValueType in SQLBindParameter.

(Als de gegevenswaarden voor een of meer rijen niet kunnen worden geconverteerd, maar een of meer rijen zijn geretourneerd, retourneert deze functie SQL_SUCCESS_WITH_INFO.)
07007 Schending van beperkte parameterwaarde Het parametertype SQL_PARAM_INPUT_OUTPUT_STREAM wordt alleen gebruikt voor een parameter die gegevens in delen verzendt en ontvangt. Een invoergebonden buffer is niet toegestaan voor dit parametertype.

Deze fout treedt op wanneer het parametertype SQL_PARAM_INPUT_OUTPUT is en wanneer de *StrLen_or_IndPtr die is opgegeven in SQLBindParameter niet gelijk is aan SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len) of SQL_DATA_AT_EXEC.
07S01 Ongeldig gebruik van standaardparameter Een parameterwaarde, ingesteld met SQLBindParameter, is SQL_DEFAULT_PARAM en de bijbehorende parameter heeft geen standaardwaarde.
08S01 Communicatiekoppelingsfout De communicatiekoppeling tussen het stuurprogramma en de gegevensbron waarmee het stuurprogramma is verbonden, is mislukt voordat de verwerking van de functie is voltooid.
21S01 Lijst met waarden invoegen komt niet overeen met de kolomlijst * StatementText bevatte een INSERT-instructie en het aantal waarden dat moet worden ingevoegd, komt niet overeen met de mate van de afgeleide tabel.
21S02 De mate van afgeleide tabel komt niet overeen met de kolomlijst * StatementText bevatte een CREATE VIEW-instructie en de niet-gekwalificeerde kolomlijst (het aantal kolommen dat is opgegeven voor de weergave in de argumenten voor de kolom-id van de SQL-instructie ) bevatte meer namen dan het aantal kolommen in de afgeleide tabel dat is gedefinieerd door het argument queryspecificatie van de SQL-instructie .
22001 Tekenreeksgegevens, juiste afkapping De toewijzing van een teken of binaire waarde aan een kolom resulteerde in het afkappen van niet-lege tekengegevens of niet-null binaire gegevens.
22002 Indicatorvariabele vereist, maar niet opgegeven NULL-gegevens waren gebonden aan een uitvoerparameter waarvan StrLen_or_IndPtr ingesteld door SQLBindParameter een null-aanwijzer was.
22003 Numerieke waarde buiten het bereik * StatementText bevatte een SQL-instructie die een afhankelijke numerieke parameter of letterlijke waarde bevatte, en de waarde heeft ervoor gezorgd dat het gehele gedeelte (in tegenstelling tot breuken) van het getal wordt afgekapt wanneer deze is toegewezen aan de gekoppelde tabelkolom.

Het retourneren van een numerieke waarde (als numeriek of tekenreeks) voor een of meer invoer-/uitvoer- of uitvoerparameters zou ervoor hebben gezorgd dat het gehele (in plaats van fractionele) deel van het getal wordt afgekapt.
22007 Ongeldige datum/tijd-notatie * StatementText bevatte een SQL-instructie met een datum-, tijd- of tijdstempelstructuur als afhankelijke parameter en de parameter was respectievelijk een ongeldige datum, tijd of tijdstempel.

Een invoer-/uitvoer- of uitvoerparameter is gebonden aan een datum-, tijd- of tijdstempel-C-structuur en een waarde in de geretourneerde parameter was respectievelijk een ongeldige datum, tijd of tijdstempel. (Functie retourneert SQL_SUCCESS_WITH_INFO.)
22008 Overloop van datum/tijdveld * StatementText bevat een SQL-instructie met een datum/tijd-expressie die, wanneer deze wordt berekend, resulteert in een datum-, tijd- of tijdstempelstructuur die ongeldig was.

Een datum/tijd-expressie die is berekend voor een invoer-/uitvoer- of uitvoerparameter heeft geresulteerd in een datum-, tijd- of tijdstempel C-structuur die ongeldig was.
22012 Delen door nul * StatementText bevatte een SQL-instructie met een rekenkundige expressie die door nul werd veroorzaakt.

Een rekenkundige expressie die wordt berekend voor een invoer-/uitvoer- of uitvoerparameter, heeft geresulteerd in delen door nul.
22015 Intervalveldoverloop *StatementText bevatte een exacte numerieke parameter of intervalparameter die, bij conversie naar een SQL-gegevenstype interval, een verlies van significante cijfers veroorzaakte.

*StatementText bevatte een intervalparameter met meer dan één veld dat, bij conversie naar een numeriek gegevenstype in een kolom, geen weergave had in het numerieke gegevenstype.

*StatementText bevat parametergegevens die zijn toegewezen aan een SQL-intervaltype en er is geen weergave van de waarde van het C-type in het SQL-intervaltype.

Het toewijzen van een invoer-/uitvoer- of uitvoerparameter die een exact numeriek of interval-SQL-type was aan een interval C-type, heeft een verlies van significante cijfers veroorzaakt.

Wanneer een invoer-/uitvoer- of uitvoerparameter is toegewezen aan een interval C-structuur, was er geen weergave van de gegevens in de intervalgegevensstructuur.
22018 Ongeldige tekenwaarde voor cast-specificatie *StatementText bevatte een C-type dat een exacte of geschatte numerieke waarde, een datum/tijd of een intervalgegevenstype was; het SQL-type van de kolom was een gegevenstype voor tekens; en de waarde in de kolom was geen geldige letterlijke waarde van het afhankelijke C-type.

Wanneer een invoer-/uitvoer- of uitvoerparameter is geretourneerd, was het SQL-type een exacte of geschatte numerieke waarde, een datum/tijd of een gegevenstype interval; het C-type is SQL_C_CHAR; en de waarde in de kolom was geen geldige letterlijke waarde van het afhankelijke SQL-type.
22019 Ongeldig escape-teken * StatementText bevatte een SQL-instructie met een LIKE-predicaat met een ESCAPE in de WHERE-component en de lengte van het escape-teken na ESCAPE was niet gelijk aan 1.
22025 Ongeldige escapereeks * StatementText bevatte een SQL-instructie met hetescape-tekenLIKE-patroonwaarde in de WHERE-component en het teken na het escape-teken in de patroonwaarde was niet een van de "%" of "_".
23000 Schending van integriteitsbeperking * StatementText bevatte een SQL-instructie met een parameter of letterlijke waarde. De parameterwaarde was NULL voor een kolom die is gedefinieerd als NOT NULL in de gekoppelde tabelkolom. Er is een dubbele waarde opgegeven voor een kolom die alleen unieke waarden bevat of een andere integriteitsbeperking is geschonden.
24000 Ongeldige cursorstatus Er is een cursor geplaatst op de StatementHandle door SQLFetch of SQLFetchScroll. Deze fout wordt geretourneerd door Driver Manager als SQLFetch of SQLFetchScroll geen SQL_NO_DATA heeft geretourneerd en wordt geretourneerd door het stuurprogramma als SQLFetch of SQLFetchScroll SQL_NO_DATA heeft geretourneerd.

Er is een cursor geopend, maar niet op de StatementHandle geplaatst.

* StatementText bevatte een bijwerk- of verwijderinstructie en de cursor werd vóór het begin van de resultatenset of na het einde van de resultatenset geplaatst.
34000 Ongeldige cursornaam * StatementText bevatte een positioned update- of delete-instructie en de cursor waarnaar wordt verwezen door de instructie die wordt uitgevoerd, is niet geopend.
3D000 Ongeldige catalogusnaam De catalogusnaam die is opgegeven in StatementText , is ongeldig.
3F000 Ongeldige schemanaam De schemanaam die is opgegeven in StatementText , is ongeldig.
40001 Serialisatiefout De transactie is teruggedraaid vanwege een resource-impasse met een andere transactie.
40003 Voltooiing van instructie onbekend De gekoppelde verbinding is mislukt tijdens de uitvoering van deze functie en de status van de transactie kan niet worden bepaald.
42000 Syntaxisfout of schending van toegang * StatementText bevatte een SQL-instructie die niet preparable was of een syntaxisfout bevatte.

De gebruiker is niet gemachtigd om de SQL-instructie uit te voeren die is opgenomen in *StatementText.
42S01 Basistabel of -weergave bestaat al * StatementText bevat een CREATE TABLE - of CREATE VIEW-instructie en de tabelnaam of weergavenaam die is opgegeven, bestaat al.
42S02 Basistabel of -weergave is niet gevonden * StatementText bevatte een DROP TABLE - of DROP VIEW-instructie en de opgegeven tabelnaam of weergavenaam bestond niet.

* StatementText bevatte een ALTER TABLE-instructie en de opgegeven tabelnaam bestond niet.

* StatementText bevatte een CREATE VIEW-instructie en er bestond geen tabelnaam of weergavenaam die is gedefinieerd door de queryspecificatie.

* StatementText bevatte een CREATE INDEX-instructie en de opgegeven tabelnaam bestond niet.

* StatementText bevatte een GRANT - of REVOKE-instructie en de opgegeven tabelnaam of weergavenaam bestond niet.

* StatementText bevatte een SELECT-instructie en een opgegeven tabelnaam of weergavenaam bestond niet.

* StatementText bevatte een DELETE-, INSERT- of UPDATE-instructie en de opgegeven tabelnaam bestond niet.

* StatementText bevatte een CREATE TABLE-instructie en een tabel die is opgegeven in een beperking (die verwijst naar een andere tabel dan de tabel die wordt gemaakt) bestond niet.

* StatementText bevatte een CREATE SCHEMA-instructie en er bestond geen opgegeven tabelnaam of weergavenaam.
42S11 Index bestaat al * StatementText bevatte een CREATE INDEX-instructie en de opgegeven indexnaam bestond al.

* StatementText bevatte een CREATE SCHEMA-instructie en de opgegeven indexnaam bestond al.
42S12 Index is niet gevonden * StatementText bevatte een DROP INDEX-instructie en de opgegeven indexnaam bestond niet.
42S21 Kolom bestaat al * StatementText bevat een ALTER TABLE-instructie en de kolom die is opgegeven in de ADD-component is niet uniek of identificeert een bestaande kolom in de basistabel.
42S22 Kolom is niet gevonden * StatementText bevat een CREATE INDEX-instructie en een of meer van de kolomnamen die zijn opgegeven in de kolomlijst, bestaan niet.

* StatementText bevat een GRANT - of REVOKE-instructie en er bestaat geen opgegeven kolomnaam.

* StatementText bevatte een SELECT-, DELETE-, INSERT- of UPDATE-instructie en een opgegeven kolomnaam bestond niet.

* StatementText bevat een CREATE TABLE-instructie en er bestaat geen kolom die is opgegeven in een beperking (die verwijst naar een andere tabel dan de tabel die wordt gemaakt).

* StatementText bevat een CREATE SCHEMA-instructie en er bestaat geen opgegeven kolomnaam.
44000 MET SCHENDING VAN CHECK OPTION Het argument StatementText bevatte een INSERT-instructie die is uitgevoerd op een bekeken tabel of een tabel die is afgeleid van de bekeken tabel die is gemaakt door HET opgeven van DE OPTIE CHECK, zodat een of meer rijen die worden beïnvloed door de instructie INSERT niet meer aanwezig zijn in de weergegeven tabel.

Het argument StatementText bevat een UPDATE-instructie die wordt uitgevoerd op een bekeken tabel of een tabel die is afgeleid van de bekeken tabel die is gemaakt door HET opgeven van DE OPTIE CHECK, zodat een of meer rijen die worden beïnvloed door de UPDATE-instructie niet meer aanwezig zijn in de weergegeven tabel.
HY000 Algemene fout Er is een fout opgetreden waarvoor er geen specifieke SQLSTATE is en waarvoor geen implementatiespecifieke SQLSTATE is gedefinieerd. Het foutbericht dat door SQLGetDiagRec in de *MessageText-buffer wordt geretourneerd, beschrijft de fout en de oorzaak ervan.
HY001 Fout bij geheugentoewijzing Het stuurprogramma kan geen geheugen toewijzen dat nodig is om de uitvoering of voltooiing van de functie te ondersteunen.
HY008 Bewerking geannuleerd Asynchrone verwerking is ingeschakeld voor de StatementHandle. De functie is aangeroepen en voordat de uitvoering is voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle. Vervolgens werd de functie opnieuw aangeroepen op de StatementHandle.

De functie is aangeroepen en voordat de uitvoering is voltooid, werd SQLCancel of SQLCancelHandle aangeroepen op de StatementHandle vanuit een andere thread in een multithread-toepassing.
HY009 Ongeldig gebruik van null-aanwijzer (DM) *StatementText was een null-aanwijzer.
HY010 Fout in functiereeks (DM) Er is een asynchroon uitgevoerde functie aangeroepen voor de verbindingsgreep die is gekoppeld aan de StatementHandle. Deze asynchrone functie werd nog steeds uitgevoerd toen de SQLExecDirect-functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect of SQLMoreResults werd aangeroepen voor de StatementHandle en geretourneerd SQL_PARAM_DATA_AVAILABLE. Deze functie is aangeroepen voordat gegevens zijn opgehaald voor alle gestreamde parameters.

(DM) Er is een asynchroon uitgevoerde functie (niet deze) aangeroepen voor de StatementHandle en werd nog steeds uitgevoerd toen deze functie werd aangeroepen.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations of SQLSetPos werd aangeroepen voor de StatementHandle en geretourneerd SQL_NEED_DATA. Deze functie is aangeroepen voordat gegevens werden verzonden voor alle parameters of kolommen voor uitvoering van gegevens.
HY013 Fout bij geheugenbeheer De functie-aanroep kan niet worden verwerkt omdat de onderliggende geheugenobjecten niet kunnen worden geopend, mogelijk vanwege weinig geheugen.
HY090 Ongeldige tekenreeks- of bufferlengte (DM) Het argument TextLength was kleiner dan of gelijk aan 0, maar niet gelijk aan SQL_NTS.

Een parameterwaarde, ingesteld met SQLBindParameter, was een null-aanwijzer en de parameterlengtewaarde was niet 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM of kleiner dan of gelijk aan SQL_LEN_DATA_AT_EXEC_OFFSET.

Een parameterwaarde, ingesteld met SQLBindParameter, was geen null-aanwijzer; het C-gegevenstype is SQL_C_BINARY of SQL_C_CHAR; en de parameterlengtewaarde kleiner is dan 0, maar niet is SQL_NTS, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM of kleiner dan of gelijk aan SQL_LEN_DATA_AT_EXEC_OFFSET.

Een parameterlengtewaarde die door SQLBindParameter is gebonden, is ingesteld op SQL_DATA_AT_EXEC; het SQL-type is SQL_LONGVARCHAR, SQL_LONGVARBINARY of een lang gegevensbronspecifiek gegevenstype; en het SQL_NEED_LONG_DATA_LEN informatietype in SQLGetInfo was 'Y'.
HY105 Ongeldig parametertype De waarde die is opgegeven voor het argument InputOutputType in SQLBindParameter , is SQL_PARAM_OUTPUT en de parameter was een invoerparameter.
HY109 Ongeldige cursorpositie * StatementText bevatte een bijwerk- of verwijderinstructie en de cursor is op een rij verwijderd (door SQLSetPos of SQLFetchScroll) die is verwijderd of niet kan worden opgehaald.
HY117 De verbinding is onderbroken vanwege een onbekende transactiestatus. Alleen de verbinding verbreken en alleen-lezenfuncties zijn toegestaan. (DM) Zie SQLEndTran Function voor meer informatie over de onderbroken status.
HYC00 Optionele functie niet geïmplementeerd De combinatie van de huidige instellingen van de SQL_ATTR_CONCURRENCY- en SQL_ATTR_CURSOR_TYPE instructiekenmerken wordt niet ondersteund door het stuurprogramma of de gegevensbron.

Het kenmerk SQL_ATTR_USE_BOOKMARKS instructie is ingesteld op SQL_UB_VARIABLE en het kenmerk SQL_ATTR_CURSOR_TYPE instructie is ingesteld op een cursortype waarvoor het stuurprogramma geen bladwijzers ondersteunt.
HYT00 Time-out verlopen De time-outperiode van de query is verlopen voordat de gegevensbron de resultatenset heeft geretourneerd. De time-outperiode wordt ingesteld via SQLSetStmtAttr, SQL_ATTR_QUERY_TIMEOUT.
HYT01 Time-out voor de verbinding is overschreden De time-outperiode voor de verbinding is verlopen voordat de gegevensbron op de aanvraag heeft gereageerd. De time-outperiode voor de verbinding wordt ingesteld via SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Stuurprogramma biedt geen ondersteuning voor deze functie (DM) Het stuurprogramma dat is gekoppeld aan de StatementHandle biedt geen ondersteuning voor de functie.
IM017 Polling is uitgeschakeld in de asynchrone meldingsmodus Wanneer het meldingsmodel wordt gebruikt, wordt polling uitgeschakeld.
IM018 SQLCompleteAsync is niet aangeroepen om de vorige asynchrone bewerking op deze ingang te voltooien. Als de vorige functieaanroep op de ingang SQL_STILL_EXECUTING retourneert en als de meldingsmodus is ingeschakeld, moet SQLCompleteAsync worden aangeroepen op de ingang om naverwerking te kunnen uitvoeren en de bewerking te voltooien.

Comments

U roept SQLExecDirect aan om een SQL-instructie naar de gegevensbron te verzenden. Zie Directe uitvoering voor meer informatie over directe uitvoering. Het stuurprogramma wijzigt de instructie om de vorm van SQL te gebruiken die door de gegevensbron wordt gebruikt en verzendt deze vervolgens naar de gegevensbron. Het stuurprogramma wijzigt met name de escapereeksen die worden gebruikt om bepaalde functies in SQL te definiëren. Zie Escape Sequences in ODBC voor de syntaxis van escapereeksen.

U kunt een of meer parametermarkeringen opnemen in de SQL-instructie. Als u een parametermarkering wilt opnemen, moet u een vraagteken (?) insluiten in de SQL-instructie op de juiste positie. Zie Instructieparameters voor meer informatie over parameters.

Na een geslaagde aanroep naar SQLExecDirect die een resultatenset retourneert (zoals vanuit een SELECT-instructie ), wordt de instructiegreep vóór de eerste rij van de resultatenset geplaatst. Vervolgens kunt u SQLFetch of SQLFetchScroll aanroepen om rijen op te halen of SQLRowCount aanroepen om het aantal betrokken rijen voor INSERT-, UPDATE- of DELETE-instructies te bepalen.

Als de SQL-instructie een SELECT-instructie is en u SQLSetCursorName aan een cursor wilt koppelen, gebruikt het stuurprogramma de opgegeven cursor. Anders genereert het stuurprogramma een cursornaam.

Als de gegevensbron zich in de handmatige doorvoermodus bevindt (waarvoor expliciete transactieinitiatie is vereist) en een transactie nog niet is gestart, start het stuurprogramma een transactie voordat de SQL-instructie wordt verzonden. Zie Manual-Commit-modus voor meer informatie.

Als u SQLExecDirect gebruikt om een COMMIT - of ROLLBACK-instructie in te dienen, is deze niet compatibel tussen DBMS-producten. Als u een transactie wilt doorvoeren of terugdraaien, roept u SQLEndTran aan.

Als SQLExecDirect een parameter voor gegevens bij uitvoering tegenkomt, wordt SQL_NEED_DATA geretourneerd. Verzend de gegevens met behulp van SQLParamData en SQLPutData. Zie SQLBindParameter, SQLParamData, SQLPutData en Het verzenden van lange gegevens.

Als SQLExecDirect een doorzochte update, invoeg- of verwijderinstructie uitvoert die geen invloed heeft op rijen in de gegevensbron, retourneert de aanroep naar SQLExecDirect SQL_NO_DATA.

Als de waarde van het kenmerk SQL_ATTR_PARAMSET_SIZE instructie groter is dan 1 en de SQL-instructie ten minste één parametermarkering bevat, voert SQLExecDirect de SQL-instructie één keer uit voor elke set parameterwaarden van de matrices die worden verwezen door het argument ParameterValuePointer in de aanroep naar SQLBindParameter. Zie Matrices van parameterwaarden voor meer informatie.

Als bladwijzers zijn ingeschakeld en een query wordt uitgevoerd die geen ondersteuning biedt voor bladwijzers, moet het stuurprogramma proberen om de omgeving te dwingen tot een omgeving die bladwijzers ondersteunt door een kenmerkwaarde te wijzigen en SQLSTATE 01S02 te retourneren (optiewaarde gewijzigd). Als het kenmerk niet kan worden gewijzigd, moet het stuurprogramma SQLSTATE HY024 retourneren (ongeldige kenmerkwaarde).

Opmerking

Wanneer u verbindingspooling gebruikt, voert u geen SQL-instructies uit die de database of de context van de database wijzigen, zoals de INSTRUCTIEUSE-database in SQL Server, waarmee de catalogus wordt gewijzigd die door een gegevensbron wordt gebruikt.

Codevoorbeeld

Zie SQLBindCol, SQLGetData en het ODBC-voorbeeldprogramma.

Voor informatie over Zien!
Een buffer koppelen aan een kolom in een resultatenset SQLBindCol, functie
Verwerking van instructie annuleren SQLCancel, functie
Een doorvoer- of terugdraaibewerking uitvoeren SQLEndTran, functie
Een voorbereide SQL-instructie uitvoeren SQLExecute, functie
Meerdere rijen met gegevens ophalen SQLFetch, functie
Een gegevensblok ophalen of door een resultatenset schuiven SQLFetchScroll, functie
Een cursornaam retourneren SQLGetCursorName, functie
Een deel of alle gegevenskolommen ophalen SQLGetData, functie
Retourneert de volgende parameter voor het verzenden van gegevens voor SQLParamData, functie
Een instructie voorbereiden voor uitvoering SQLPrepare, functie
Parametergegevens verzenden tijdens uitvoering SQLPutData, functie
Een cursornaam instellen SQLSetCursorName, functie
Een instructiekenmerk instellen SQLSetStmtAttr, functie

ODBC-API-naslaginformatie
ODBC-headerbestanden