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 das StatementHandle gültig, bis der Cursor geschlossen ist, an dem sich das Anweisungsattribut auf seinen vorherigen Wert zurückgesetzt. 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 "LIKE Pattern value ESCAPE escape character" 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. |
24.000 | 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 | Die Verbindung wird aufgrund des unbekannten Transaktionsstatus 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 SQLSetConnectAttr 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 aus einem Aufruf von SQLExecute verarbeitet oder verwirft, 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.
Verwandte Funktionen
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 |