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, z. B. GRANT oder REVOKE, geben keine Resultsets 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 gibt ein Resultset zurück, das nur die Anzahl der zeilen enthält, die von der Änderung betroffen sind. 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 einen Batch oder eine gespeicherte Prozedur ausführt, die mehrere INSERT-, UPDATE- oder DELETE-Anweisungen enthält, muss das Resultset aus jeder Änderungsanweisung mithilfe von SQLRowCount verarbeitet oder mit SQLMoreResults abgebrochen werden. Diese Zählungen können abgebrochen werden, indem eine SET NOCOUNT ON-Anweisung in die Batch- oder gespeicherte Prozedur eingeschlossen wird.
Transact-SQL enthält die SET NOCOUNT-Anweisung. Wenn die NOCOUNT-Option aktiviert ist, gibt SQL Server nicht die Anzahl der Zeilen zurück, die von einer Anweisung betroffen sind, 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 aktiviert oder deaktiviert 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 dies, dass NOCOUNT deaktiviert ist und der Wert 0 von SQLRowCount angibt, 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 Batches oder gespeicherte Prozeduren können mehrere SET NOCOUNT-Anweisungen enthalten, sodass Programmierer nicht davon ausgehen 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
SET SHOWPLAN (verfügbar mit früheren Versionen von SQL Server)
FESTLEGEN VON STATISTIKEN
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)