Resultados de Processamento (ODBC)

Aplica-se a: SQL ServerBase de Dados SQL do AzureAzure SQL Managed InstanceAzure Synapse AnalyticsSistema de Plataforma de Análise (PDW)

Após uma aplicação submeter uma instrução SQL, o SQL Server devolve quaisquer dados resultantes como um ou mais conjuntos de resultados. Um conjunto de resultados é um conjunto de linhas e colunas que correspondem aos critérios da consulta. Instruções SELECT, funções de catálogo e alguns procedimentos armazenados produzem um conjunto de resultados disponibilizado a uma aplicação em forma tabular. Se a instrução SQL executada for um procedimento armazenado, um lote contendo múltiplos comandos, ou uma instrução SELECT contendo palavras-chave, haverá múltiplos conjuntos de resultados a processar.

As funções de catálogo ODBC também podem recuperar dados. Por exemplo, o SQLColumns recupera dados sobre colunas na fonte de dados. Estes conjuntos de resultados podem conter zero ou mais linhas.

Outras instruções SQL, como GRANT ou REVOKE, não retornam conjuntos de resultados. Para estas declarações, o código de retorno do SQLExecute ou SQLExecDirect é geralmente a única indicação de que a instrução foi bem-sucedida.

Cada INSERTinstrução , UPDATE, and DELETE devolve um conjunto de resultados contendo apenas o número de linhas afetadas pela modificação. Esta contagem é disponibilizada quando a aplicação chama SQLRowCount. ODBC 3. x aplicações devem chamar SQLRowCount para recuperar o conjunto de resultados ou SQLMoreResults para o cancelar. Quando uma aplicação executa um procedimento em lote ou armazenado contendo múltiplas INSERT, UPDATE, ou DELETE instruções, o conjunto de resultados de cada instrução de modificação deve ser processado usando SQLRowCount ou cancelado usando SQLMoreResults. Estas contagens podem ser canceladas incluindo uma SET NOCOUNT instrução ON no procedimento lotado ou armazenado.

Transact-SQL inclui a SET NOCOUNT declaração. Quando a NOCOUNT opção está ativada, o SQL Server não devolve as contagens das linhas afetadas por uma instrução e o SQLRowCount devolve 0. A versão do driver ODBC SQL Server Native Client introduz uma opção SQLGetStmtAttr específica para o driver, SQL_SOPT_SS_NOCOUNT_STATUS, para reportar se a NOCOUNT opção está ligada ou desligada. Sempre que o SQLRowCount devolve 0, a aplicação deve testar SQL_SOPT_SS_NOCOUNT_STATUS. Se SQL_NC_ON for devolvido, o valor de 0 do SQLRowCount indica apenas que SQL Server não devolveu a contagem de linhas. Se SQL_NC_OFF for devolvido, significa que NOCOUNT está desligado e o valor 0 do SQLRowCount indica que a instrução não afetou nenhuma linha. As aplicações não devem mostrar o valor do SQLRowCount quando SQL_SOPT_SS_NOCOUNT_STATUS está SQL_NC_OFF. Grandes lotes ou procedimentos armazenados podem conter múltiplas SET NOCOUNT instruções para que os programadores não possam assumir SQL_SOPT_SS_NOCOUNT_STATUS permanece constante. A opção deve ser testada cada vez que o SQLRowCount devolve 0.

Várias outras instruções Transact-SQL devolvem os seus dados em mensagens em vez de conjuntos de resultados. Quando o driver ODBC SQL Server Native Client recebe estas mensagens, devolve SQL_SUCCESS_WITH_INFO para informar a aplicação de que as mensagens informativas estão disponíveis. A aplicação pode então chamar SQLGetDiagRec para recuperar estas mensagens. As Transact-SQL afirmações que funcionam desta forma são:

  • DBCC

  • SETSHOWPLAN (disponível com versões anteriores do SQL Server)

  • SET STATISTICS

  • PRINT

  • RAISERROR

O driver ODBC do SQL Server Native Client devolve SQL_ERROR num erro RAISerror com gravidade de 11 ou superior. Se a gravidade do RAISERROR for 19 ou superior, a ligação também é interrompida.

Para processar os conjuntos de resultados a partir de uma instrução SQL, a aplicação:

  • Determina as características do conjunto de resultados.

  • Liga as colunas às variáveis de programação.

  • Recupera um único valor, uma linha inteira de valores ou várias linhas de valores.

  • Testa para ver se existem mais conjuntos de resultados e, em caso afirmativo, volta a determinar as características do novo conjunto de resultados.

O processo de recuperar linhas da fonte de dados e devolvê-las à aplicação chama-se busca.

Na presente seção

Ver também

SQL Server Cliente Nativo (ODBC)
Tópicos de instruções de processamento de resultados (ODBC)