Condividi tramite


Risultati dell'elaborazione (ODBC)

Dopo l'invio di un'istruzione SQL da parte di un'applicazione, SQL Server restituisce eventuali dati risultanti come uno o più set di risultati. Un set di risultati è un set di righe e colonne che corrispondono ai criteri della query. Le istruzioni SELECT, le funzioni di catalogo e alcune stored procedure producono un set di risultati reso disponibile a un'applicazione in formato tabulare. Se l'istruzione SQL eseguita è una stored procedure, un batch contenente più comandi o un'istruzione SELECT contenente parole chiave, il numero di set di risultati da elaborare sarà maggiore.

Anche le funzioni di catalogo ODBC possono recuperare dati. La funzione SQLColumns, ad esempio, recupera dati relativi alle colonne nell'origine dati. Questi set di risultati possono contenere zero o più righe.

Le altre istruzioni SQL, ad esempio GRANT o REVOKE, non restituiscono set di risultati. Per queste istruzioni, il codice restituito da SQLExecute o SQLExecDirect è in genere la sola indicazione di un'esecuzione corretta dell'istruzione.

Ogni istruzione INSERT, UPDATE e DELETE restituisce un set di risultati contenente solo il numero di righe modificate. Questo conteggio viene reso disponibile quando l'applicazione chiama SQLRowCount. Le applicazioni ODBC 3.x devono chiamare SQLRowCount per recuperare il set di risultati o SQLMoreResults per annullarlo. Quando un'applicazione esegue un batch o una stored procedure che contiene più istruzioni INSERT, UPDATE o DELETE, il set di risultati proveniente da ogni istruzione di modifica deve essere elaborato utilizzando SQLRowCount o annullato utilizzando SQLMoreResults. Questi conteggi possono essere annullati includendo un'istruzione SET NOCOUNT ON nel batch o nella stored procedure.

Transact-SQL include l'istruzione SET NOCOUNT. Quando è impostata l'opzione NOCOUNT, SQL Server non restituisce i conteggi delle righe interessate da un'istruzione e SQLRowCount restituisce 0. La versione del driver ODBC di SQL Server Native Client introduce un'opzione SQLGetStmtAttr specifica del driver, SQL_SOPT_SS_NOCOUNT_STATUS, per segnalare se l'opzione NOCOUNT è attivata o disattivata. Quando SQLRowCount restituisce 0, l'applicazione deve testare SQL_SOPT_SS_NOCOUNT_STATUS. Se viene restituito SQL_NC_ON, il valore 0 di SQLRowCount indica solo che SQL Server non ha restituito un conteggio delle righe. Se viene restituito SQL_NC_OFF, NOCOUNT è disattivato e il valore 0 di SQLRowCount indica che l'istruzione non ha influito sulle righe. Quando SQL_SOPT_SS_NOCOUNT_STATUS è SQL_NC_OFF, le applicazioni non dovrebbero visualizzare il valore di SQLRowCount. Le stored procedure o i batch di grandi dimensioni possono contenere più istruzioni SET NOCOUNT, pertanto i programmatori non possono presupporre che SQL_SOPT_SS_NOCOUNT_STATUS rimanga costante. L'opzione deve essere testata ogni volta che SQLRowCount restituisce 0.

Diverse altre istruzioni Transact-SQL restituiscono nei messaggi dati anziché set di risultati. Quando il driver ODBC di SQL Server Native Client riceve questi messaggi, restituisce SQL_SUCCESS_WITH_INFO per indicare all'applicazione che sono disponibili messaggi informativi. L'applicazione può quindi chiamare SQLGetDiagRec per recuperare tali messaggi. Le istruzioni Transact-SQL che funzionano in questo modo sono:

  • DBCC

  • SET SHOWPLAN (disponibile con versioni precedenti di SQL Server)

  • SET STATISTICS

  • PRINT

  • RAISERROR

Il driver ODBC di SQL Server Native Client restituisce SQL_ERROR in caso di RAISERROR con gravità 11 o superiore. Se la gravità di RAISERROR è 19 o superiore, viene anche interrotta la connessione.

Per elaborare i set di risultati da un'istruzione SQL, l'applicazione:

  • Determina le caratteristiche del set di risultati.

  • Associa le colonne a variabili di programma.

  • Recupera un valore singolo, un'intera riga di valori o più righe di valori.

  • Verifica se sono presenti altri set di risultati e, in caso affermativo, esegue il ciclo all'indietro per determinare le caratteristiche del nuovo set di risultati.

Il processo che consente di recuperare le righe dall'origine dati e di restituirle alle applicazioni viene denominato recupero.

Contenuto della sezione

Vedere anche

Concetti

SQL Server Native Client (ODBC)

Altre risorse

Procedure relative all'elaborazione dei risultati (ODBC)