Usar cursores (ODBC)
Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure Azure Synapse Analytics Analytics Platform System (PDW)
Para usar cursores
Chame SQLSetStmtAttr para definir os atributos de cursor desejados:
Defina os atributos SQL_ATTR_CURSOR_TYPE e SQL_ATTR_CONCURRENCY (esta é a opção preferencial).
Ou
Defina os atributos SQL_CURSOR_SCROLLABLE e SQL_CURSOR_SENSITIVITY.
Chame SQLSetStmtAttr para definir o tamanho do conjunto de linhas usando o atributo SQL_ATTR_ROW_ARRAY_SIZE.
Outra opção será chamar SQLSetCursorName para definir um nome de cursor se as atualizações posicionadas forem feitas usando a cláusula WHERE CURRENT OF.
Execute a instrução SQL.
Outra opção será chamar SQLGetCursorName para definir o nome de cursor se as atualizações posicionadas forem feitas usando a cláusula WHERE CURRENT OF e um nome de cursor não foi fornecido com SQLSetCursorName na Etapa 3.
Chame SQLNumResultCols para obter o número de colunas (C) no conjunto de linhas.
Use a associação por coluna.
- ou -
Use a associação por linha.
Busque conjuntos de linhas do cursor conforme desejado.
Chame SQLMoreResults para determinar se outro conjunto de resultados está disponível.
Se SQL_SUCCESS for retornado, outro conjunto de resultados estará disponível.
Se SQL_NO_DATA for retornado, nenhum outro conjunto de resultados estará disponível.
Se SQL_SUCCESS_WITH_INFO ou SQL_ERROR for retornado, chame SQLGetDiagRec para determinar se a saída de uma instrução PRINT ou RAISERROR estará disponível.
Se parâmetros de instrução associados forem usados para parâmetros de saída ou o valor retornado de um procedimento armazenado, use os dados disponíveis agora nos buffers de parâmetro associados.
Quando são usados parâmetros associados, cada chamada para SQLExecute ou SQLExecDirect terá executado a instrução SQL por S vezes, em que S é o número de elementos na matriz de parâmetros associados. Isso significa que haverá S conjuntos de resultados a ser processados, onde cada conjunto consiste em todos os conjuntos de resultados, parâmetros de saída e códigos de retorno normalmente retornados por uma única execução da instrução SQL.
Observe que, quando um conjunto de resultados contém linhas computadas, cada linha computada é disponibilizada como um conjunto de resultados separado. Esses conjuntos de resultados computados são intercalados nas linhas normais e dividem as linhas normais em vários conjuntos de resultados.
Outra opção é chamar SQLFreeStmt com SQL_UNBIND para liberar qualquer buffer de coluna associado.
Se outro conjunto de resultados estiver disponível, vá para a Etapa 6.
Na Etapa 9, chamar SQLMoreResults em um conjunto de resultados parcialmente processado limpa o restante do conjunto de resultados. Outra maneira de limpar um conjunto de resultados parcialmente processado é chamar SQLCloseCursor.
Você pode controlar o tipo de cursor usado definindo SQL_ATTR_CURSOR_TYPE e SQL_ATTR_CONCURRENCY ou definindo SQL_ATTR_CURSOR_SENSITIVITY e SQL_ATTR_CURSOR_SCROLLABLE. Você não deve misturar os dois métodos de especificação de comportamento de cursor.