Compartilhar via


Processando resultados (ODBC)

Depois que um aplicativo envia uma instrução SQL, o SQL Server retorna qualquer dado resultante como um ou mais conjuntos de resultados. Um conjunto de resultados é um conjunto de linhas e colunas que correspondem aos critérios da consulta. As instruções SELECT, funções de catálogo e alguns procedimentos armazenados geram um conjunto de resultados disponibilizado para um aplicativo no formato tabular. Se a instrução SQL executada for um procedimento armazenado, um lote contendo vários comandos ou uma instrução SELECT contendo palavras-chave, haverá vários conjuntos de resultados a serem processados.

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

Outras instruções SQL, como GRANT ou REVOKE, não retornam conjuntos de resultados. Para essas instruções, geralmente o código de retorno de SQLExecute ou SQLExecDirect é a única indicação de que a instrução teve êxito.

Cada instrução INSERT, UPDATE e DELETE retorna um conjunto de resultados que contém apenas o número de linhas afetado pela modificação. Essa contagem é disponibilizada quando o aplicativo chama SQLRowCount. Os aplicativos ODBC 3.x devem chamar SQLRowCount para recuperar o conjunto de resultados ou SQLMoreResults para cancelá-lo. Quando um aplicativo executa um lote ou um procedimento armazenado que contém várias instruções INSERT, UPDATE ou DELETE, o conjunto de resultados de cada instrução de modificação deve ser processado usando SQLRowCount ou cancelado usando SQLMoreResults. Essas contagens podem ser canceladas incluindo uma instrução SET NOCOUNT ON no lote ou no procedimento armazenado.

O Transact-SQL inclui a instrução SET NOCOUNT. Quando a opção NOCOUNT está ativada, o SQL Server não retorna as contagens das linhas afetadas por uma instrução e SQLRowCount retorna 0. A versão do driver ODBC do SQL Server Native Client apresenta uma opção SQLGetStmtAttr específica do driver, SQL_SOPT_SS_NOCOUNT_STATUS, para relatar se a opção NOCOUNT está ativada ou desativada. Sempre que SQLRowCount retornar 0, o aplicativo deverá testar SQL_SOPT_SS_NOCOUNT_STATUS. Se SQL_NC_ON for retornado, o valor 0 de SQLRowCount indicará apenas que o SQL Server não retornou uma contagem de linhas. Se SQL_NC_OFF for retornado, isso significa que NOCOUNT está desativado e que o valor 0 de SQLRowCount indicará que a instrução não afetou nenhuma linha. Os aplicativos não deverão exibir o valor de SQLRowCount quando SQL_SOPT_SS_NOCOUNT_STATUS for SQL_NC_OFF. Lotes ou procedimentos armazenados grandes podem conter várias instruções SET NOCOUNT, de forma que os programadores não podem supor que SQL_SOPT_SS_NOCOUNT_STATUS permaneça constante. A opção deverá ser testada sempre que SQLRowCount retornar 0.

Várias outras instruções Transact-SQL retornam seus dados em mensagens e não em conjuntos de resultados. Quando o driver ODBC do SQL Server Native Client receber essas mensagens, ele retornará SQL_SUCCESS_WITH_INFO para informar o aplicativo que há mensagens informativas disponíveis. Então, o aplicativo pode chamar SQLGetDiagRec para recuperar essas mensagens. As instruções Transact-SQL que funcionam deste modo são as seguintes:

  • DBCC

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

  • SET STATISTICS

  • PRINT

  • RAISERROR

O driver ODBC do SQL Server Native Client retorna SQL_ERROR em um RAISERROR com uma severidade 11 ou superior. Se a severidade do RAISERROR for 19 ou superior, a conexão também será descartada.

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

  • Determina as características do conjunto de resultados.

  • Associa as colunas às variáveis do programa.

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

  • Testa se há mais conjuntos de resultados e, se houver, faz loops de volta para determinar as características do novo conjunto de resultados.

O processo de recuperação de linhas da fonte de dados e de seu retorno ao aplicativo é chamado de busca.

Nesta seção

Consulte também

Conceitos

SQL Server Native Client (ODBC)

Outros recursos

Tópicos de instrução sobre processamento de resultados (ODBC)