Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Nachdem eine Anwendung eine SQL-Anweisung übermittelt hat, gibt SQL Server alle resultierenden Daten als ein oder mehrere Resultsets zurück. Ein Resultset ist eine Reihe von Zeilen und Spalten, die den Kriterien der Abfrage entsprechen. SELECT-Anweisungen, Katalogfunktionen und einige gespeicherte Prozeduren erzeugen ein Resultset, das einer Anwendung in tabellarischer Form zur Verfügung gestellt wird. Wenn es sich bei der ausgeführten SQL-Anweisung um eine gespeicherte Prozedur, einen Batch mit mehreren Befehlen oder eine SELECT-Anweisung mit Schlüsselwörtern handelt, gibt es mehrere Resultsets, die verarbeitet werden sollen.
ODBC-Katalogfunktionen können auch Daten abrufen. Beispielsweise ruft SQLColumns Daten zu Spalten in der Datenquelle ab. Diese Resultsets können null oder mehr Zeilen enthalten.
Andere SQL-Anweisungen wie GRANT oder REVOKE, geben keine Ergebnismengen zurück. Für diese Anweisungen ist der Rückgabecode von SQLExecute oder SQLExecDirect in der Regel der einzige Hinweis, dass die Anweisung erfolgreich war.
Jede INSERT, UPDATE, und DELETE Anweisung liefert eine Ergebnismenge zurück, die nur die Anzahl der von der Änderung betroffenen Zeilen enthält. Diese Anzahl wird verfügbar gemacht, wenn die Anwendung SQLRowCount aufruft. ODBC 3. x-Anwendungen müssen entweder SQLRowCount aufrufen, um das Resultset abzurufen, oder SQLMoreResults , um es abzubrechen. Wenn eine Anwendung eine Batch- oder gespeicherte Prozedur mit mehreren INSERT, UPDATE, oder DELETE Anweisungen ausführt, muss die Ergebnismenge jeder Modifikationsanweisung mit SQLRowCount verarbeitet oder mit SQLMoreResults abgebrochen werden. Diese Zählungen können durch Hinzufügen einer ON-Anweisung in die Charge oder das SET NOCOUNT gespeicherte Verfahren eingestellt werden.
Transact-SQL enthält die Aussage SET NOCOUNT . Wenn die NOCOUNT Option aktiviert ist, gibt SQL Server nicht die Anzahl der von einer Anweisung betroffenen Zeilen zurück, und SQLRowCount gibt 0 zurück. Die SQL Server Native Client ODBC-Treiberversion führt eine treiberspezifische SQLGetStmtAttr-Option ein, SQL_SOPT_SS_NOCOUNT_STATUS, um zu melden, ob die NOCOUNT Option eingeschaltet oder ausgeschaltet ist. Wenn SQLRowCount 0 zurückgibt, sollte die Anwendung SQL_SOPT_SS_NOCOUNT_STATUS testen. Wenn SQL_NC_ON zurückgegeben wird, gibt der Wert 0 von SQLRowCount nur an, dass SQL Server keine Zeilenanzahl zurückgegeben hat. Wenn SQL_NC_OFF zurückgegeben wird, bedeutet das, dass NOCOUNT aus ist und der Wert 0 von SQLRowCount anzeigt, dass die Anweisung keine Zeilen beeinflusst hat. Anwendungen sollten den Wert von SQLRowCount nicht anzeigen, wenn SQL_SOPT_SS_NOCOUNT_STATUS SQL_NC_OFF ist. Große Chargen oder gespeicherte Prozeduren können mehrere SET NOCOUNT Anweisungen enthalten, sodass Programmierer nicht annehmen können, SQL_SOPT_SS_NOCOUNT_STATUS konstant bleibt. Die Option sollte jedes Mal getestet werden, wenn SQLRowCount 0 zurückgibt.
Mehrere andere Transact-SQL-Anweisungen geben ihre Daten in Nachrichten und nicht in Resultsets zurück. Wenn der SQL Server Native Client ODBC-Treiber diese Meldungen empfängt, wird SQL_SUCCESS_WITH_INFO zurückgegeben, um der Anwendung mitzuteilen, dass Informationsmeldungen verfügbar sind. Die Anwendung kann dann SQLGetDiagRec aufrufen, um diese Nachrichten abzurufen. Die Transact-SQL Anweisungen, die auf diese Weise funktionieren, sind:
DBCC
SETSHOWPLAN (verfügbar mit früheren Versionen des SQL Server)
SET STATISTICS
Drucken
RAISERROR
Der ODBC-Treiber für SQL Server Native Client gibt SQL_ERROR für einen RAISERROR-Wert mit einem Schweregrad von 11 oder höher zurück. Wenn der Schweregrad des RAISERROR 19 oder höher ist, wird die Verbindung ebenfalls gelöscht.
Um die Resultsets aus einer SQL-Anweisung zu verarbeiten, führen Sie die Anwendung aus:
Bestimmt die Merkmale des Resultsets.
Bindet die Spalten an Programmvariablen.
Ruft einen einzelnen Wert, eine gesamte Wertezeile oder mehrere Wertezeilen ab.
Tests, um festzustellen, ob mehr Resultsets vorhanden sind, und wenn ja, werden Schleifen zurück zum Bestimmen der Merkmale des neuen Resultsets durchgeführt.
Der Vorgang zum Abrufen von Zeilen aus der Datenquelle und das Zurückgeben dieser Zeilen an die Anwendung wird als Abrufen bezeichnet.
In diesem Abschnitt
Siehe auch
SQL Server Native Client (ODBC)
Verarbeitung von Themen mit Vorgehensweisen für Ergebnisse (ODBC)