Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Um resultado é algo devolvido pela fonte de dados após a execução de uma instrução. O ODBC tem dois tipos de resultados: conjuntos de resultados e contagem de linhas. Contagens de linhas são o número de linhas afetadas por uma instrução de atualização, eliminação ou inserção. Os lotes, descritos em Lotes de Instruções SQL, podem gerar múltiplos resultados.
A tabela seguinte lista as opções SQLGetInfo que uma aplicação utiliza para determinar se uma fonte de dados retorna múltiplos resultados para cada tipo diferente de lote. Em particular, uma fonte de dados pode devolver uma única contagem de linhas para todo o lote de instruções ou contagens individuais de linhas para cada instrução do lote. No caso de uma instrução geradora de conjuntos de resultados executada com um array de parâmetros, a fonte de dados pode devolver um único conjunto de resultados para todos os conjuntos de parâmetros ou conjuntos individuais para cada conjunto de parâmetros.
| Tipo de lote | Contagem de linhas | Conjuntos de resultados |
|---|---|---|
| Lote explícito | SQL_BATCH_ROW_COUNT[a] | --[b] |
| Procedure | SQL_BATCH_ROW_COUNT[a] | --[b] |
| Arrays de parâmetros | SQL_PARAM_ARRAYS_ROW_COUNTS | SQL_PARAM_ARRAYS_SELECTS |
[a] Instruções que geram a contagem de linhas dentro de um lote podem ser suportadas, mas o retorno dessas contagens não é suportado. A opção SQL_BATCH_SUPPORT no SQLGetInfo indica se as instruções geradoras de contagem de linhas são permitidas em lotes; a opção SQL_BATCH_ROW_COUNTS indica se estas contagens de linhas são devolvidas à aplicação.
[b] Lotes e procedimentos explícitos retornam sempre múltiplos conjuntos de resultados quando incluem múltiplas instruções geradoras de conjuntos de resultados.
Observação
A opção SQL_MULT_RESULT_SETS introduzida no ODBC 1.0 fornece apenas informações gerais sobre se múltiplos conjuntos de resultados podem ser devolvidos. Em particular, é definido como "Y" se os bits SQL_BS_SELECT_EXPLICIT ou SQL_BS_SELECT_PROC forem devolvidos para SQL_BATCH_SUPPORT ou se SQL_PAS_BATCH for devolvido para SQL_PARAM_ARRAYS_SELECT.
Para processar múltiplos resultados, uma aplicação chama SQLMoreResults. Esta função descarta o resultado atual e disponibiliza o seguinte resultado. Retorna SQL_NO_DATA quando não há mais resultados disponíveis. Por exemplo, suponha que as seguintes instruções são executadas em lote:
SELECT * FROM Parts WHERE Price > 100.00;
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00
Após a execução destas instruções, a aplicação recolhe linhas do conjunto de resultados criado pela instrução SELECT . Quando termina de buscar linhas, chama o SQLMoreResults para disponibilizar o número de peças que foram revalorizadas. Se necessário, SQLMoreResults descarta as linhas não lidas e fecha o cursor. A aplicação então chama SQLRowCount para determinar quantas peças foram revalorizadas pela instrução UPDATE.
Depende do driver se toda a instrução batch é executada antes de quaisquer resultados estarem disponíveis. Em algumas implementações, é o caso; noutras, chamar SQLMoreResults desencadeia a execução da próxima instrução no lote.
Se uma das instruções num lote falhar, SQLMoreResults devolverá SQL_ERROR ou SQL_SUCCESS_WITH_INFO. Se o lote foi abortado quando a instrução falhou ou se a instrução falhou foi a última do lote, o SQLMoreResults devolverá SQL_ERROR. Se o lote não foi abortado quando a instrução falhou e a instrução falhada não foi a última do lote, o SQLMoreResults devolverá SQL_SUCCESS_WITH_INFO. SQL_SUCCESS_WITH_INFO indica que pelo menos um conjunto de resultados ou contagem foi gerado e que o lote não foi abortado.