Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um resultado é algo retornado pela fonte de dados depois que uma instrução é executada. O ODBC tem dois tipos de resultados: conjuntos de resultados e contagens de linhas. Contagem de linhas é o número de linhas afetadas por uma instrução de atualização, exclusão ou inserção. Os lotes, descritos em lotes de instruções SQL, podem gerar vários resultados.
A tabela a seguir lista as opções SQLGetInfo que um aplicativo usa para determinar se uma fonte de dados retorna vários resultados para cada tipo diferente de lote. Em particular, uma fonte de dados pode retornar uma única contagem de linhas para todo o lote de instruções ou contagens de linhas individuais para cada instrução no lote. No caso de uma instrução de geração de conjunto de resultados executada com uma matriz de parâmetros, a fonte de dados pode retornar um único conjunto de resultados para todos os conjuntos de parâmetros ou conjuntos de resultados individuais para cada conjunto de parâmetros.
| Tipo de lote | Contagens de linhas | Conjuntos de resultados |
|---|---|---|
| Lote explícito | SQL_BATCH_ROW_COUNT[a] | --[b] |
| Procedure | SQL_BATCH_ROW_COUNT[a] (contagem_de_linhas_do_lote_SQL[a]) | --[b] |
| Matrizes de parâmetros | SQL_PARAM_ARRAYS_ROW_COUNTS | SQL_PARAM_ARRAYS_SELECTS |
[a] Pode haver suporte para instruções destinadas a gerar contagens de linhas em um lote, mas não há suporte para o retorno dessas contagens. A opção SQL_BATCH_SUPPORT no SQLGetInfo indica se as instruções de geração de contagem de linhas são permitidas em lotes; a opção SQL_BATCH_ROW_COUNTS indica se essas contagens de linhas são retornadas para o aplicativo.
[b] Lotes e procedimentos explícitos sempre retornam vários conjuntos de resultados quando incluem várias instruções de geração de conjunto de resultados.
Observação
A opção SQL_MULT_RESULT_SETS introduzida no ODBC 1.0 fornece apenas informações gerais sobre se vários conjuntos de resultados podem ser retornados. Em particular, ele será definido como "Y" se os bits SQL_BS_SELECT_EXPLICIT ou SQL_BS_SELECT_PROC forem retornados para SQL_BATCH_SUPPORT ou se SQL_PAS_BATCH for retornado para SQL_PARAM_ARRAYS_SELECT.
Para processar vários resultados, um aplicativo chama SQLMoreResults. Essa função descarta o resultado atual e disponibiliza o próximo resultado. Ele retorna SQL_NO_DATA quando não há mais resultados disponíveis. Por exemplo, suponha que as seguintes instruções sejam executadas como um lote:
SELECT * FROM Parts WHERE Price > 100.00;
UPDATE Parts SET Price = 0.9 * Price WHERE Price > 100.00
Depois que essas instruções são executadas, o aplicativo busca linhas do conjunto de resultados criado pela instrução SELECT . Quando terminar de buscar linhas, ele chama SQLMoreResults para disponibilizar o número de partes que foram reprecadas. Se necessário, SQLMoreResults descarta linhas não buscadas e fecha o cursor. Em seguida, o aplicativo chama SQLRowCount para determinar quantas partes foram revalorizados pela instrução UPDATE .
A execução de toda a instrução em lote antes dos resultados estarem disponíveis depende do driver. Em algumas implementações, esse é o caso; em outros, chamar SQLMoreResults dispara a execução da próxima instrução no lote.
Se uma das instruções em um lote falhar, o SQLMoreResults retornará SQL_ERROR ou SQL_SUCCESS_WITH_INFO. Se o lote foi anulado quando a instrução falhou ou a instrução com falha foi a última instrução no lote, o SQLMoreResults retornará SQL_ERROR. Se o lote não foi anulado quando a instrução falhou e a instrução com falha não foi a última instrução no lote, SQLMoreResults retornará 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 anulado.