Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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.
Gerelateerde functies
| 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 |