Funzione SQLRowCount

Conformità
Versione introdotta: Conformità agli standard ODBC 1.0: ISO 92

Riepilogo
SQLRowCount restituisce il numero di righe interessate da un'istruzione UPDATE, INSERT o DELETE , un'operazione di SQL_ADD, SQL_UPDATE_BY_BOOKMARK o SQL_DELETE_BY_BOOKMARK in SQLBulkOperations oppure un'operazione di SQL_UPDATE o SQL_DELETE in SQLSetPos.

Sintassi

  
SQLRETURN SQLRowCount(  
      SQLHSTMT   StatementHandle,  
      SQLLEN *   RowCountPtr);  

Argomenti

StatementHandle
[Input] Handle di istruzione.

RowCountPtr
[Output] Punta a un buffer in cui restituire un conteggio delle righe. Per le istruzioni UPDATE, INSERT e DELETE , per le operazioni SQL_ADD, SQL_UPDATE_BY_BOOKMARK e SQL_DELETE_BY_BOOKMARK in SQLBulkOperations e per le operazioni SQL_UPDATE o SQL_DELETE in SQLSetPos, il valore restituito in *RowCountPtr è il numero di righe interessate dalla richiesta o -1 se il numero di righe interessate non è disponibile.

Quando viene chiamato SQLExecute, SQLExecDirect, SQLBulkOperations, SQLSetPos o SQLMoreResults , il campo SQL_DIAG_ROW_COUNT della struttura dei dati di diagnostica viene impostato sul conteggio delle righe e il conteggio delle righe viene memorizzato nella cache in modo dipendente dall'implementazione. SQLRowCount restituisce il valore del conteggio delle righe memorizzato nella cache. Il valore del conteggio delle righe memorizzato nella cache è valido fino a quando l'handle di istruzione non viene impostato sullo stato preparato o allocato, l'istruzione viene rieseguita o viene chiamato SQLCloseCursor . Si noti che se una funzione è stata chiamata dopo l'impostazione del campo SQL_DIAG_ROW_COUNT, il valore restituito da SQLRowCount potrebbe essere diverso dal valore nel campo SQL_DIAG_ROW_COUNT perché il campo SQL_DIAG_ROW_COUNT viene reimpostato su 0 da qualsiasi chiamata di funzione.

Per altre istruzioni e funzioni, il driver può definire il valore restituito in *RowCountPtr. Ad esempio, alcune origini dati possono essere in grado di restituire il numero di righe restituite da un'istruzione SELECT o da una funzione del catalogo prima di recuperare le righe.

Nota

Molte origini dati non possono restituire il numero di righe in un set di risultati prima di recuperarle; per la massima interoperabilità, le applicazioni non devono basarsi su questo comportamento.

Valori restituiti

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR o SQL_INVALID_HANDLE.

Diagnostica

Quando SQLRowCount restituisce SQL_ERROR o SQL_SUCCESS_WITH_INFO, è possibile ottenere un valore SQLSTATE associato chiamando SQLGetDiagRec con handleType di SQL_HANDLE_STMT e handle di StatementHandle. La tabella seguente elenca i valori SQLSTATE comunemente restituiti da SQLRowCount e ne spiega ognuno nel contesto di questa funzione. La notazione "(DM)" precede le descrizioni di SQLSTATEs restituite da Gestione driver. Il codice restituito associato a ogni valore SQLSTATE è SQL_ERROR, a meno che non sia specificato diversamente.

SQLSTATE Errore Descrizione
01000 Avviso generale Messaggio informativo specifico del driver. (La funzione restituisce SQL_SUCCESS_WITH_INFO.
HY000 Errore generale: Si è verificato un errore per il quale non è stato specificato SQLSTATE e per il quale non è stato definito alcun SQLSTATE specifico dell'implementazione. Il messaggio di errore restituito da SQLGetDiagRec nel buffer *MessageText descrive l'errore e la relativa causa.
HY001 Errore di allocazione della memoria Il driver non è riuscito ad allocare memoria necessaria per supportare l'esecuzione o il completamento della funzione.
HY010 Errore della sequenza di funzioni (DM) È stata chiamata una funzione in esecuzione asincrona per l'handle di connessione associato a StatementHandle. Questa funzione asincrona era ancora in esecuzione quando è stata chiamata la funzione SQLRowCount .

(DM) SQLExecute, SQLExecDirect o SQLMoreResults è stato chiamato per StatementHandle e restituito SQL_PARAM_DATA_AVAILABLE. Questa funzione è stata chiamata prima del recupero dei dati per tutti i parametri trasmessi.

(DM) La funzione è stata chiamata prima di chiamare SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos per StatementHandle.

(DM) È stata chiamata una funzione in esecuzione asincrona per StatementHandle ed era ancora in esecuzione quando questa funzione è stata chiamata.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations o SQLSetPos è stato chiamato per StatementHandle e restituito SQL_NEED_DATA. Questa funzione è stata chiamata prima dell'invio dei dati per tutti i parametri o le colonne data-at-execution.
HY013 Errore di gestione della memoria Impossibile elaborare la chiamata di funzione perché non è stato possibile accedere agli oggetti di memoria sottostanti, probabilmente a causa di condizioni di memoria insufficiente.
HY117 La connessione viene sospesa a causa dello stato sconosciuto della transazione. Sono consentite solo funzioni disconnesse e di sola lettura. (DM) Per altre informazioni sullo stato sospeso, vedere Funzione SQLEndTran.
HYT01 Il timeout della connessione è scaduto Periodo di timeout della connessione scaduto prima che l'origine dati rispondesse alla richiesta. Il periodo di timeout della connessione viene impostato tramite SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 Il driver non supporta questa funzione (DM) Il driver associato a StatementHandle non supporta la funzione.

Commenti

Se l'ultima istruzione SQL eseguita nell'handle di istruzione non era un'istruzione UPDATE, INSERT o DELETE o se l'argomento Operation nella chiamata precedente a SQLBulkOperations non è stato SQL_ADD, SQL_UPDATE_BY_BOOKMARK o SQL_DELETE_BY_BOOKMARK oppure se l'argomento Operation nella chiamata precedente a SQLSetPos non è stato SQL_UPDATE o SQL_DELETE, il valore di *RowCountPtr è definito dal driver. Per altre informazioni, vedere Determinazione del numero di righe interessate.

Per informazioni su Vedere
Esecuzione di un'istruzione SQL Funzione SQLExecDirect
Esecuzione di un'istruzione SQL preparata Funzione SQLExecute

Vedi anche

Riferimento API ODBC
File di intestazione ODBC