Partilhar via


Resultados do Processamento (ODBC)

Depois que um aplicativo envia uma instrução SQL, o SQL Server retorna todos os 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 para um aplicativo em 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 sobre 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, o código de retorno de SQLExecute ou SQLExecDirect geralmente é a única indicação de que a instrução foi bem-sucedida.

Cada instrução INSERT, UPDATE e DELETE retorna um conjunto de resultados que contém apenas o número de linhas afetadas pela modificação. Essa contagem é disponibilizada quando o aplicativo chama SQLRowCount. ODBC 3. x aplicativos devem chamar SQLRowCount para recuperar o conjunto de resultados ou SQLMoreResults para cancelá-lo. Quando um aplicativo executa um lote ou 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 procedimento armazenado.

Transact-SQL inclui a instrução SET NOCOUNT. Quando a opção NOCOUNT está definida, 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 deve testar SQL_SOPT_SS_NOCOUNT_STATUS. Se SQL_NC_ON for retornado, o valor de 0 de SQLRowCount indica 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 o valor 0 de SQLRowCount indica que a instrução não afetou nenhuma linha. Os aplicativos não devem exibir o valor de SQLRowCount quando SQL_SOPT_SS_NOCOUNT_STATUS é SQL_NC_OFF. Lotes grandes ou procedimentos armazenados podem conter várias instruções SET NOCOUNT para que os programadores não possam assumir SQL_SOPT_SS_NOCOUNT_STATUS permanecem constantes. A opção deve ser testada sempre que SQLRowCount retornar 0.

Várias outras instruções Transact-SQL retornam seus dados em mensagens em vez de conjuntos de resultados. Quando o driver ODBC do SQL Server Native Client recebe essas mensagens, ele retorna SQL_SUCCESS_WITH_INFO para informar ao aplicativo que as mensagens informativas estão disponíveis. Em seguida, o aplicativo pode chamar SQLGetDiagRec para recuperar essas mensagens. As instruções Transact-SQL que funcionam dessa maneira são:

  • DBCC

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

  • DEFINIR ESTATÍSTICAS

  • IMPRIMIR

  • RAISERROR

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

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

  • Determina as características do conjunto de resultados.

  • Associa as colunas a variáveis de programa.

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

  • Testa para ver se há mais conjuntos de resultados e, em caso afirmativo, retorna para determinar as características do novo conjunto de resultados.

O processo de recuperar linhas da fonte de dados e devolvê-las ao aplicativo é chamado de busca.

Nesta seção

Consulte Também

SQL Server Native Client (ODBC)
Tópicos de instruções de resultados de processamento (ODBC)