Como usar cursores (ODBC)
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 é chamar 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 é 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, onde 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.