SQLExecute-Funktion

Konformität
Version eingeführt: ODBC 1.0 Standards Compliance: ISO 92

Zusammenfassung
SQLExecute führt eine vorbereitete Anweisung aus, wobei die aktuellen Werte der Parametermarkervariablen verwendet werden, wenn parametermarkierungen in der Anweisung vorhanden sind.

Syntax

  
SQLRETURN SQLExecute(  
     SQLHSTMT     StatementHandle);  

Argumente

StatementHandle
[Eingabe] Anweisungshandle.

Gibt zurück

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

Diagnostik

Wenn SQLExecute entweder SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert durch Aufrufen von SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Handle of StatementHandle abgerufen werden. In der folgenden Tabelle sind die sqlSTATE-Werte aufgeführt, die häufig von SQLExecute zurückgegeben werden, und jede wird im Kontext dieser Funktion erläutert. Die Notation "(DM)" steht vor den Beschreibungen von SQLSTATEs, die vom Treiber-Manager zurückgegeben werden. Der rückgabecode, der jedem SQLSTATE-Wert zugeordnet ist, ist SQL_ERROR, sofern nicht anders angegeben.

SQLSTATE Error Beschreibung
01000 Allgemeiner Warnhinweis Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01001 Cursorvorgangskonflikt Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine positionierte Aktualisierungs- oder Lösch-Anweisung, und es wurden keine Zeilen oder mehr als eine Zeile aktualisiert oder gelöscht. (Weitere Informationen zu Updates für mehr als eine Zeile finden Sie in der Beschreibung des SQL_ATTR_SIMULATE_CURSOR Attribut in SQLSetStmtAttr.)

(Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01003 NULL-Wert in set-Funktion eliminiert Die vorbereitete Anweisung, die statementHandle zugeordnet ist, enthielt eine Setfunktion (z. B. AVG, MAX, MIN usw.), aber nicht die Count-Set-Funktion, und NULL-Argumentwerte wurden entfernt, bevor die Funktion angewendet wurde. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01004 Zeichenfolgendaten, rechts abgeschnitten Zeichenfolgen- oder Binärdaten, die für einen Ausgabeparameter zurückgegeben werden, führten zum Abschneiden von nicht leeren Zeichen- oder Nicht-NULL-Binärdaten. Wenn es sich um einen Zeichenfolgenwert handelte, wurde er mit der rechten Abkürzung versehen. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01006 Nicht widerrufene Berechtigungen Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, war eine REVOKE-Anweisung , und der Benutzer verfügte nicht über die angegebene Berechtigung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01007 Nicht gewährte Berechtigungen Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, war eine GRANT-Anweisung , und der Benutzer konnte die angegebene Berechtigung nicht erhalten.
01S02 Optionswert geändert Ein angegebenes Anweisungsattribut war aufgrund von Implementierungsbedingungen ungültig, sodass ein ähnlicher Wert vorübergehend ersetzt wurde. (SQLGetStmtAttr kann aufgerufen werden, um zu bestimmen, was der vorübergehend ersetzte Wert ist.) Der Ersatzwert ist für "StatementHandle" gültig, bis der Cursor geschlossen wird, an dem sich das Anweisungsattribut rückgängig machen auf den vorherigen Wert bezieht. Die zu ändernden Anweisungsattribute sind: SQL_ATTR_CONCURRENCY, SQL_ATTR_CURSOR_TYPE, SQL_ATTR_KEYSET_SIZE, SQL_ATTR_MAX_LENGTH, SQL_ATTR_MAX_ROWS, SQL_ATTR_QUERY_TIMEOUT und SQL_ATTR_SIMULATE_CURSOR. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
01S07 Bruchabkürzung Die für einen Eingabe-/Ausgabeparameter zurückgegebenen Daten wurden abgeschnitten, sodass der Bruchteil eines numerischen Datentyps abgeschnitten oder der Bruchteil der Zeitkomponente eines Zeit-, Zeitstempel- oder Intervalldatentyps abgeschnitten wurde.

(Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
07002 COUNT-Feld falsch Die Anzahl der in SQLBindParameter angegebenen Parameter war kleiner als die Anzahl der Parameter in der SQL-Anweisung, die in *StatementText enthalten ist.

SQLBindParameter wurde mit ParameterValuePtr aufgerufen, auf einen Nullzeiger festgelegt, StrLen_or_IndPtr nicht auf SQL_NULL_DATA oder SQL_DATA_AT_EXEC festgelegt, und InputOutputType wurde nicht auf SQL_PARAM_OUTPUT festgelegt, sodass die Anzahl der in SQLBindParameter angegebenen Parameter größer war als die Anzahl der Parameter in der SQL-Anweisung, die in *StatementText enthalten ist.
07006 Verletzung des Eingeschränkten Datentyp-Attributs Der durch das ValueType-Argument in SQLBindParameter für den gebundenen Parameter identifizierte Datenwert konnte nicht in den datentyp konvertiert werden, der durch das ParameterType-Argument in SQLBindParameter identifiziert wurde.

Der für einen Parameter zurückgegebene Datenwert, der als SQL_PARAM_INPUT_OUTPUT oder SQL_PARAM_OUTPUT gebunden ist, konnte nicht in den Datentyp konvertiert werden, der durch das ValueType-Argument in SQLBindParameter identifiziert wurde.

(Wenn die Datenwerte für eine oder mehrere Zeilen nicht konvertiert werden konnten, aber mindestens eine Zeile erfolgreich zurückgegeben wurden, gibt diese Funktion SQL_SUCCESS_WITH_INFO zurück.)
07007 Verletzung des eingeschränkten Parameterwerts Der Parametertyp SQL_PARAM_INPUT_OUTPUT_STREAM wird nur für einen Parameter verwendet, der Daten in Teilen sendet und empfängt. Für diesen Parametertyp ist kein eingabegebundener Puffer zulässig.

Dieser Fehler tritt auf, wenn der Parametertyp SQL_PARAM_INPUT_OUTPUT ist und wenn die in SQLBindParameter angegebene *StrLen_or_IndPtr nicht mit SQL_NULL_DATA, SQL_DEFAULT_PARAM, SQL_LEN_DATA_AT_EXEC(len) oder SQL_DATA_AT_EXEC identisch ist.
07S01 Ungültige Verwendung des Standardparameters Ein Parameterwert, der mit SQLBindParameter festgelegt wurde, wurde SQL_DEFAULT_PARAM, und der entsprechende Parameter war kein Parameter für einen ODBC-Aufruf einer kanonischen Prozedur.
08S01 Kommunikationslinkfehler Die Kommunikationsverbindung zwischen dem Treiber und der Datenquelle, mit der der Treiber verbunden wurde, ist fehlgeschlagen, bevor die Verarbeitung der Funktion abgeschlossen wurde.
21S02 Der Grad der abgeleiteten Tabelle stimmt nicht mit der Spaltenliste überein. Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine CREATE VIEW-Anweisung , und die nicht qualifizierte Spaltenliste (die Anzahl der Spalten, die für die Ansicht in den Spaltenbezeichnerargumenten der SQL-Anweisung angegeben wurden) enthielt mehr Namen als die Anzahl der Spalten in der abgeleiteten Tabelle, die durch das Abfragespezifikationsargument der SQL-Anweisung definiert wurde.
22001 Zeichenfolgendaten, rechter Abschneiden Die Zuweisung eines Zeichens oder eines Binärwerts zu einer Spalte führte zum Abschneiden von nicht leeren Zeichen (Zeichen) oder Nicht-Nullzeichen (Binärzeichen) oder Bytes.
22002 Indikatorvariable erforderlich, aber nicht angegeben NULL-Daten wurden an einen Ausgabeparameter gebunden, dessen StrLen_or_IndPtr von SQLBindParameter festgelegt wurde.
22003 Numerischer Wert außerhalb des Bereichs Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt einen gebundenen numerischen Parameter, und der Parameterwert verursachte den gesamten Teil (im Gegensatz zu Bruchzahlen) der Zahl, die abgeschnitten wird, wenn sie der zugeordneten Tabellenspalte zugeordnet ist.

Das Zurückgeben eines numerischen Werts (als numerische oder Zeichenfolge) für einen oder mehrere Eingabe-/Ausgabeparameter hätte dazu geführt, dass der gesamte Teil (im Gegensatz zu Bruchzahlen) der Zahl abgeschnitten wird.
22007 Ungültiges Datetime-Format Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine SQL-Anweisung, die eine Datums-, Uhrzeit- oder Zeitstempelstruktur als gebundenen Parameter enthielt und der Parameter ein ungültiges Datum, eine Uhrzeit oder ein Zeitstempel war.

Ein Eingabe-/Ausgabe- oder Ausgabeparameter wurde an eine Datums-, Uhrzeit- oder Zeitstempel-C-Struktur gebunden, und ein Wert im zurückgegebenen Parameter war bzw. ein ungültiger Datums-, Uhrzeit- oder Zeitstempel. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
22008 Datetime-Feldüberlauf Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine SQL-Anweisung, die einen Datetime-Ausdruck enthielt, der bei der Berechnung zu einer ungültigen Datums-, Uhrzeit- oder Zeitstempelstruktur führte.

Ein datumstime-Ausdruck, der für einen Eingabe-/Ausgabeparameter berechnet wurde, führte zu einer ungültigen Datums-, Uhrzeit- oder Zeitstempel-C-Struktur.
22012 Division durch Null Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt einen arithmetischen Ausdruck, der eine Division durch Null verursacht hat.

Ein arithmetischer Ausdruck, der für einen Eingabe-/Ausgabeparameter berechnet wurde, führte zu einer Division durch Null.
22015 Intervallfeldüberlauf *StatementText enthielt einen exakten numerischen oder Intervallparameter, der beim Konvertieren in einen SQL-Intervalldatentyp zu einem Verlust signifikanter Ziffern führte.

*StatementText enthielt einen Intervallparameter mit mehr als einem Feld, der beim Konvertieren in einen numerischen Datentyp in einer Spalte keine Darstellung im numerischen Datentyp hatte.

*StatementText enthielt Parameterdaten, die einem SQL-Intervalltyp zugewiesen wurden, und es gab keine Darstellung des Werts des C-Typs im SQL-Intervalltyp.

Das Zuweisen eines Eingabe-/Ausgabe- oder Ausgabeparameters, bei dem es sich um einen genauen numerischen oder Intervall-SQL-Typ handelte, zu einem Intervall-C-Typ führte zu einem Verlust signifikanter Ziffern.

Wenn einer Intervall-C-Struktur ein Eingabe-/Ausgabeparameter zugewiesen wurde, gab es keine Darstellung der Daten in der Intervalldatenstruktur.
22018 Ungültiger Zeichenwert für die Umwandlungsspezifikation *StatementText enthielt einen C-Typ, der eine genaue oder ungefähre zahl, datums- oder Intervalldatentyp war; der SQL-Typ der Spalte war ein Zeichendatentyp, und der Wert in der Spalte war kein gültiges Literal des gebundenen C-Typs.

Wenn ein Eingabe-/Ausgabe- oder Ausgabeparameter zurückgegeben wurde, war der SQL-Typ eine genaue oder ungefähre Zahl, ein Datetime- oder ein Intervalldatentyp; der Typ C SQL_C_CHAR; und der Wert in der Spalte war kein gültiges Literal des gebundenen SQL-Typs.
22019 Ungültiges Escapezeichen Die vorbereitete Anweisung, die statementHandle zugeordnet ist, enthielt ein LIKE-Prädikat mit einem ESCAPE in der WHERE-Klausel , und die Länge des Escapezeichens nach ESCAPE war nicht gleich 1.
22025 Ungültige Escapesequenz Die vorbereitete Anweisung, die statementHandle zugeordnet ist, enthielt "LIKEPattern valueESCAPE escapecharacter" in der WHERE-Klausel, und das Zeichen, das auf das Escapezeichen im Musterwert folgt, war nicht einer von "%" oder "_".
23000 Integritätseinschränkungsverletzung Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt einen Parameter. Der Parameterwert war NULL für eine Spalte, die in der zugehörigen Tabellenspalte als NOT NULL definiert wurde, ein doppelter Wert wurde für eine Spalte angegeben, die nur eindeutige Werte enthält, oder eine andere Integritätseinschränkung wurde verletzt.
24000 Ungültiger Cursorstatus Ein Cursor wurde auf der StatementHandle von SQLFetch oder SQLFetchScroll positioniert. Dieser Fehler wird vom Treiber-Manager zurückgegeben, wenn SQLFetch oder SQLFetchScroll nicht SQL_NO_DATA zurückgegeben hat und vom Treiber zurückgegeben wird, wenn SQLFetch oder SQLFetchScroll SQL_NO_DATA zurückgegeben wurde.

Ein Cursor wurde im StatementHandle geöffnet.

Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine positionierte Aktualisierungs- oder Löschaufstellung, und der Cursor wurde vor dem Start des Resultsets oder nach dem Ende des Resultsets positioniert.
40001 Serialisierungsfehler Die Transaktion wurde aufgrund eines Ressourcen-Deadlocks mit einer anderen Transaktion zurückgesetzt.
40003 Abschluss der Anweisung unbekannt Fehler bei der zugehörigen Verbindung während der Ausführung dieser Funktion, und der Status der Transaktion kann nicht bestimmt werden.
42000 Syntaxfehler oder Zugriffsverletzung Der Benutzer verfügte nicht über die Berechtigung zum Ausführen der vorbereiteten Anweisung, die der StatementHandle zugeordnet ist.
44000 WITH CHECK OPTION-Verstoß Die vorbereitete Anweisung, die Mit StatementHandle verknüpft ist, enthielt eine INSERT-Anweisung , die für eine angezeigte Tabelle oder eine Tabelle abgeleitet wurde, die von der angezeigten Tabelle abgeleitet wurde, die durch die Angabe von WITH CHECK OPTION erstellt wurde, sodass eine oder mehrere zeilen, die von der INSERT-Anweisung betroffen sind, nicht mehr in der angezeigten Tabelle vorhanden sind.

Die vorbereitete Anweisung, die der StatementHandle zugeordnet ist, enthielt eine UPDATE-Anweisung, die für eine angezeigte Tabelle oder eine tabelle abgeleitet wurde, die von der angezeigten Tabelle erstellt wurde, die durch die Angabe von WITH CHECK OPTION erstellt wurde, sodass mindestens eine von der UPDATE-Anweisung betroffene Zeilen in der angezeigten Tabelle nicht mehr vorhanden ist.
HY000 Allgemeiner Fehler Es ist ein Fehler aufgetreten, für den kein spezifischer SQLSTATE-Wert vorhanden war und für den keine implementierungsspezifische SQLSTATE definiert wurde. Die von SQLGetDiagRec im *MessageText-Puffer zurückgegebene Fehlermeldung beschreibt den Fehler und dessen Ursache.
HY001 Speicherzuweisungsfehler Der Treiber konnte speicher nicht zuordnen, der erforderlich ist, um die Ausführung oder den Abschluss der Funktion zu unterstützen.
HY008 Vorgang abgebrochen Die asynchrone Verarbeitung wurde für " StatementHandle" aktiviert. Die Funktion wurde aufgerufen, und bevor sie die Ausführung abgeschlossen hat, wurde SQLCancel oder SQLCancelHandle für die Anweisungshandle aufgerufen. Anschließend wurde die Funktion erneut für " StatementHandle" aufgerufen.

Die Funktion wurde aufgerufen, und bevor sie die Ausführung abgeschlossen hat, wurde SQLCancel oder SQLCancelHandle für das StatementHandle von einem anderen Thread in einer Multithreadanwendung aufgerufen.
HY010 Funktionssequenzfehler (DM) Eine asynchron ausgeführte Funktion wurde für den Verbindungshandle aufgerufen, der dem StatementHandle zugeordnet ist. Diese asynchrone Funktion wurde noch ausgeführt, als die SQLExecute-Funktion aufgerufen wurde.

(DM) SQLExecute, SQLExecDirect oder SQLMoreResults wurde für " StatementHandle " aufgerufen und SQL_PARAM_DATA_AVAILABLE zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle gestreamten Parameter abgerufen wurden.

(DM) Eine asynchron ausgeführte Funktion (nicht diese) wurde für das StatementHandle aufgerufen und wurde noch ausgeführt, als diese Funktion aufgerufen wurde.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos wurde für " StatementHandle " aufgerufen und SQL_NEED_DATA zurückgegeben. Diese Funktion wurde aufgerufen, bevor Daten für alle Daten bei ausführungsparametern oder -spalten gesendet wurden.

(DM) Die StatementHandle wurde nicht vorbereitet.
HY013 Speicherverwaltungsfehler Der Funktionsaufruf konnte nicht verarbeitet werden, da auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund geringer Arbeitsspeicherbedingungen.
HY090 Ungültige Zeichenfolgen- oder Pufferlänge Ein Parameterwert, der mit SQLBindParameter festgelegt wurde, war ein Nullzeiger, und der Parameterlängenwert war nicht 0, SQL_NULL_DATA, SQL_DATA_AT_EXEC, SQL_DEFAULT_PARAM oder kleiner als oder gleich SQL_LEN_DATA_AT_EXEC_OFFSET.

Ein Parameterwert, der mit SQLBindParameter festgelegt wurde, war kein Nullzeiger. Der Datentyp C wurde SQL_C_BINARY oder SQL_C_CHAR; und der Parameterlängenwert war kleiner als 0, aber nicht SQL_NTS, SQL_NULL_DATA, SQL_DEFAULT_PARAM oder SQL_DATA_AT_EXEC oder kleiner als oder gleich SQL_LEN_DATA_AT_EXEC_OFFSET.

Ein von SQLBindParameter gebundener Parameterwert wurde auf SQL_DATA_AT_EXEC festgelegt. Der SQL-Typ war entweder SQL_LONGVARCHAR, SQL_LONGVARBINARY oder ein langer datenquellenspezifischer Datentyp; und der SQL_NEED_LONG_DATA_LEN Informationstyp in SQLGetInfo lautete "Y".
HY105 Ungültiger Parametertyp Der für das Argument InputOutputType in SQLBindParameter angegebene Wert wurde SQL_PARAM_OUTPUT, und der Parameter war ein Eingabeparameter.
HY109 Ungültige Cursorposition Die vorbereitete Anweisung war eine positionierte Aktualisierungs- oder Lösch-Anweisung, und der Cursor wurde (von SQLSetPos oder SQLFetchScroll) in einer Zeile positioniert, die gelöscht oder nicht abgerufen werden konnte.
HY117 Verbinden ion wird aufgrund des unbekannten Transaktionszustands angehalten. Es sind nur Trenn- und schreibgeschützte Funktionen zulässig. (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran Function.
HYC00 Optionales Feature wurde nicht implementiert Die Kombination der aktuellen Einstellungen der SQL_ATTR_CONCURRENCY- und SQL_ATTR_CURSOR_TYPE-Anweisungsattribute wurde vom Treiber oder der Datenquelle nicht unterstützt.

Das attribut der SQL_ATTR_USE_BOOKMARKS-Anweisung wurde auf SQL_UB_VARIABLE festgelegt, und das Attribut der SQL_ATTR_CURSOR_TYPE-Anweisung wurde auf einen Cursortyp festgelegt, für den der Treiber keine Lesezeichen unterstützt.
HYT00 Timeout überschritten Der Abfragetimeoutzeitraum ist abgelaufen, bevor die Datenquelle das Resultset zurückgibt. Der Timeoutzeitraum wird über SQLSetStmtAttr SQL_ATTR_QUERY_TIMEOUT festgelegt.
HYT01 Verbindungstimeout abgelaufen Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSet Verbinden Attr SQL_ATTR_CONNECTION_TIMEOUT festgelegt.
IM001 Dieser Treiber unterstützt diese Funktion nicht. (DM) Der dem StatementHandle zugeordnete Treiber unterstützt die Funktion nicht.
IM017 Die Abrufung ist im asynchronen Benachrichtigungsmodus deaktiviert. Immer wenn das Benachrichtigungsmodell verwendet wird, ist die Abrufung deaktiviert.
IM018 SQLCompleteAsync wurde nicht aufgerufen, um den vorherigen asynchronen Vorgang für dieses Handle abzuschließen. Wenn der vorherige Funktionsaufruf für das Handle SQL_STILL_EXECUTING zurückgibt und der Benachrichtigungsmodus aktiviert ist, muss SQLCompleteAsync für das Handle aufgerufen werden, um die Nachbearbeitung durchzuführen und den Vorgang abzuschließen.

SQLExecute kann jeden SQLSTATE-Wert zurückgeben, der von SQLPrepare zurückgegeben werden kann, basierend darauf, wann die Datenquelle die sql-Anweisung auswertet, die der Anweisung zugeordnet ist.

Kommentare

SQLExecute führt eine von SQLPrepare vorbereitete Anweisung aus. Nachdem die Anwendung die Ergebnisse eines Aufrufs von SQLExecute verarbeitet oder nicht Karte kann die Anwendung SQLExecute erneut mit neuen Parameterwerten aufrufen. Weitere Informationen zur vorbereiteten Ausführung finden Sie unter "Vorbereitete Ausführung".

Um eine SELECT-Anweisung mehrmals auszuführen, muss die Anwendung SQLCloseCursor aufrufen, bevor die SELECT-Anweisung erneut ausgeführt wird.

Wenn sich die Datenquelle im manuellen Commitmodus befindet (die explizite Transaktionsinitiierung erfordert) und eine Transaktion noch nicht initiiert wurde, initiiert der Treiber eine Transaktion, bevor sie die SQL-Anweisung sendet. Weitere Informationen finden Sie unter Transaktionen.

Wenn eine Anwendung SQLPrepare zum Vorbereiten und SQLExecute zum Übermitteln einer COMMIT- oder ROLLBACK-Anweisung verwendet, ist sie nicht interoperabel zwischen DBMS-Produkten. Rufen Sie SQLEndTran auf, um eine Transaktion zu übernehmen oder ein Rollback durchzuführen.

Wenn SQLExecute auf einen Data-at-Execution-Parameter trifft, wird SQL_NEED_DATA zurückgegeben. Die Anwendung sendet die Daten mithilfe von SQLParamData und SQLPutData. Siehe SQLBindParameter, SQLParamData, SQLPutData und Senden langer Daten.

Wenn SQLExecute eine durchsuchte Aktualisierung, einzufügen oder löscht, die keine Zeilen an der Datenquelle betrifft, gibt der Aufruf von SQLExecute SQL_NO_DATA zurück.

Wenn der Wert des attributs der SQL_ATTR_PARAMSET_SIZE-Anweisung größer als 1 ist und die SQL-Anweisung mindestens eine Parametermarkierung enthält, führt SQLExecute die SQL-Anweisung einmal für jeden Satz von Parameterwerten in den Arrays aus, auf die das Argument *ParameterValuePtr in den Aufrufen von SQLBindParameter verweist. Weitere Informationen finden Sie unter Arrays von Parameterwerten.

Wenn Lesezeichen aktiviert sind und eine Abfrage ausgeführt wird, die Lesezeichen nicht unterstützen kann, sollte der Treiber versuchen, die Umgebung in eine Umgebung zu versetzen, die Lesezeichen unterstützt, indem sie einen Attributwert ändern und SQLSTATE 01S02 zurückgeben (Optionswert geändert). Wenn das Attribut nicht geändert werden kann, sollte der Treiber SQLSTATE HY024 (Ungültiger Attributwert) zurückgeben.

Hinweis

Bei Verwendung von Verbindungspooling darf eine Anwendung keine SQL-Anweisungen ausführen, die die Datenbank oder den Kontext der Datenbank ändern, z. B. die USE-Datenbank-Anweisung in SQL Server, die den von einer Datenquelle verwendeten Katalog ändert.

Codebeispiel

Siehe SQLBindParameter, SQLBulkOperations, SQLPutData und SQLSetPos.

Weitere Informationen zu Siehe
Binden eines Puffers an eine Spalte in einem Resultset SQLBindCol-Funktion
Abbrechen der Verarbeitung von Anweisungen SQLCancel-Funktion
Schließen des Cursors SQLCloseCursor-Funktion
Ausführen eines Commit- oder Rollbackvorgangs SQLEndTran-Funktion
Ausführen einer SQL-Anweisung SQLExecDirect-Funktion
Abrufen mehrerer Datenzeilen SQLFetch-Funktion
Abrufen eines Datenblocks oder Scrollen durch ein Resultset SQLFetchScroll-Funktion
Freigeben eines Anweisungshandles SQLFreeStmt-Funktion
Zurückgeben eines Cursornamens SQLGetCursorName-Funktion
Abrufen eines Teils oder aller Datenspalten SQLGetData-Funktion
Zurückgeben des nächsten Parameters zum Senden von Daten für SQLParamData-Funktion
Vorbereiten einer Anweisung für die Ausführung SQLPrepare-Funktion
Senden von Parameterdaten zur Ausführungszeit SQLPutData-Funktion
Festlegen eines Cursornamens SQLSetCursorName-Funktion
Festlegen eines Anweisungsattributs SQLSetStmtAttr-Funktion

Weitere Informationen

ODBC-API-Referenz
ODBC-Headerdateien