SQLRowCount-Funktion

Konformität
Eingeführte Version: ODBC 1.0-Standards Compliance: ISO 92

Zusammenfassung
SQLRowCount gibt die Anzahl der Zeilen zurück, die von einer UPDATE-, INSERT- oder DELETE-Anweisung betroffen sind. ein SQL_ADD-, SQL_UPDATE_BY_BOOKMARK- oder SQL_DELETE_BY_BOOKMARK-Vorgang in SQLBulkOperations; oder ein SQL_UPDATE- oder SQL_DELETE-Vorgang in SQLSetPos.

Syntax

  
SQLRETURN SQLRowCount(  
      SQLHSTMT   StatementHandle,  
      SQLLEN *   RowCountPtr);  

Argumente

StatementHandle
[Eingabe] Anweisungshandle.

RowCountPtr
[Ausgabe] Verweist auf einen Puffer, in dem eine Zeilenanzahl zurückgegeben werden soll. Für UPDATE-, INSERT- und DELETE-Anweisungen, für die SQL_ADD-, SQL_UPDATE_BY_BOOKMARK- und SQL_DELETE_BY_BOOKMARK-Vorgänge in SQLBulkOperations sowie für die SQL_UPDATE- oder SQL_DELETE-Vorgänge in SQLSetPos ist der in *RowCountPtr zurückgegebene Wert entweder die Anzahl der Zeilen, die von der Anforderung betroffen sind, oder -1, wenn die Anzahl der betroffenen Zeilen nicht verfügbar ist.

Wenn SQLExecute, SQLExecDirect, SQLBulkOperations, SQLSetPos oder SQLMoreResults aufgerufen wird, wird das SQL_DIAG_ROW_COUNT Feld der Diagnosedatenstruktur auf die Zeilenanzahl festgelegt, und die Zeilenanzahl wird implementierungsabhängig zwischengespeichert. SQLRowCount gibt den zwischengespeicherten Zeilenzählerwert zurück. Der Wert für die zwischengespeicherte Zeilenanzahl ist gültig, bis das Anweisungshandle auf den vorbereiteten oder zugeordneten Zustand zurückgesetzt, die Anweisung erneut ausgeführt oder SQLCloseCursor aufgerufen wird. Wenn eine Funktion aufgerufen wurde, seit das SQL_DIAG_ROW_COUNT Feld festgelegt wurde, unterscheidet sich der von SQLRowCount zurückgegebene Wert möglicherweise vom Wert im feld SQL_DIAG_ROW_COUNT, da das SQL_DIAG_ROW_COUNT Feld durch jeden Funktionsaufruf auf 0 zurückgesetzt wird.

Für andere Anweisungen und Funktionen kann der Treiber den in *RowCountPtr zurückgegebenen Wert definieren. Beispielsweise können einige Datenquellen die Anzahl der Zeilen zurückgeben, die von einer SELECT-Anweisung oder einer Katalogfunktion vor dem Abrufen der Zeilen zurückgegeben werden.

Hinweis

Viele Datenquellen können die Anzahl der Zeilen in einem Resultset nicht zurückgeben, bevor sie abgerufen werden. Für maximale Interoperabilität sollten Anwendungen dieses Verhalten nicht verwenden.

Gibt zurück

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR oder SQL_INVALID_HANDLE.

Diagnose

Wenn SQLRowCount SQL_ERROR oder SQL_SUCCESS_WITH_INFO zurückgibt, kann ein zugeordneter SQLSTATE-Wert abgerufen werden, indem SQLGetDiagRec mit einem HandleType von SQL_HANDLE_STMT und einem Handle von StatementHandle aufgerufen wird. In der folgenden Tabelle sind die SQLSTATE-Werte aufgeführt, die häufig von SQLRowCount zurückgegeben werden, und die einzelnen Werte werden 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 Fehler BESCHREIBUNG
01000 Allgemeine Warnung Treiberspezifische Informationsmeldung. (Funktion gibt SQL_SUCCESS_WITH_INFO zurück.)
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 seine Ursache.
HY001 Fehler bei der Speicherbelegung Der Treiber konnte keinen Arbeitsspeicher zuordnen, der für die Unterstützung der Ausführung oder Fertigstellung der Funktion erforderlich ist.
HY010 Funktionssequenzfehler (DM) Eine asynchron ausgeführte Funktion wurde für das Verbindungshandle aufgerufen, das dem StatementHandle zugeordnet ist. Diese asynchrone Funktion wurde noch ausgeführt, als die FUNKTION SQLRowCount 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) Die Funktion wurde vor dem Aufruf von SQLExecute, SQLExecDirect, SQLBulkOperations oder SQLSetPos für statementHandle aufgerufen.

(DM) Eine asynchron ausgeführte Funktion wurde für 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 der Ausführungsparameter oder -spalten gesendet wurden.
HY013 Fehler bei der Speicherverwaltung Der Funktionsaufruf konnte nicht verarbeitet werden, weil auf die zugrunde liegenden Speicherobjekte nicht zugegriffen werden konnte, möglicherweise aufgrund von geringen Arbeitsspeicherbedingungen.
HY117 Die Verbindung wird aufgrund eines unbekannten Transaktionsstatus angehalten. Nur trenn- und schreibgeschützte Funktionen sind zulässig. (DM) Weitere Informationen zum angehaltenen Zustand finden Sie unter SQLEndTran-Funktion.
HYT01 Verbindungstimeout abgelaufen Der Zeitraum für das Verbindungstimeout ist abgelaufen, bevor die Datenquelle auf die Anforderung geantwortet hat. Der Verbindungstimeoutzeitraum wird über SQLSetConnectAttr festgelegt, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Treiber unterstützt diese Funktion nicht. (DM) Der Der StatementHandle zugeordnete Treiber unterstützt die Funktion nicht.

Kommentare

Wenn die letzte SQL-Anweisung, die für das Anweisungshandle ausgeführt wurde, keine UPDATE-, INSERT- oder DELETE-Anweisung war oder das Argument Operation im vorherigen Aufruf von SQLBulkOperations nicht SQL_ADD, SQL_UPDATE_BY_BOOKMARK oder SQL_DELETE_BY_BOOKMARK war oder das Argument Operation im vorherigen Aufruf von SQLSetPos nicht SQL_UPDATE oder SQL_DELETE war, Der Wert von *RowCountPtr ist treiberdefiniert. Weitere Informationen finden Sie unter Ermitteln der Anzahl der betroffenen Zeilen.

Informationen über Finden Sie unter
Ausführen einer SQL-Anweisung SQLExecDirect-Funktion
Ausführen einer vorbereiteten SQL-Anweisung SQLExecute-Funktion

Weitere Informationen

ODBC-API-Referenz
ODBC-Headerdateien