Condividi tramite


Risultati dell'elaborazione (ODBC)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Dopo che un'applicazione invia un'istruzione SQL, SQL Server restituisce tutti i 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. Ad esempio, SQLColumns recupera i dati sulle 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 l'unica indicazione che l'istruzione ha avuto esito positivo.

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. ODBC 3.Le applicazioni x devono chiamare SQLRowCount per recuperare il set di risultati o SQLMoreResults per annullarlo. Quando un'applicazione esegue un batch o una stored procedure contenente più istruzioni INSERT, UPDATE o DELETE, il set di risultati di ogni istruzione di modifica deve essere elaborato usando SQLRowCount o annullato tramite 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 l'opzione NOCOUNT è impostata su , 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. Ogni volta che SQLRowCount restituisce 0, l'applicazione deve testare SQL_SOPT_SS_NOCOUNT_STATUS. Se viene restituito SQL_NC_ON, il valore 0 da SQLRowCount indica solo che SQL Server non ha restituito un conteggio delle righe. Se viene restituito SQL_NC_OFF, significa che NOCOUNT è disattivato e il valore 0 da SQLRowCount indica che l'istruzione non ha effetto sulle righe. Le applicazioni non devono visualizzare il valore di SQLRowCount quando SQL_SOPT_SS_NOCOUNT_STATUS è SQL_NC_OFF. 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 informare l'applicazione che sono disponibili messaggi informativi. L'applicazione può quindi chiamare SQLGetDiagRec per recuperare questi 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 su 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 anche fetching.

In questa sezione

Vedi anche

SQL Server Native Client (ODBC)
Procedure relative all'elaborazione dei risultati (ODBC)