Função SQLCloseCursor

Conformidade
Versão Introduzida: Normas ODBC 3.0 Conformidade: ISO 92

Summary
O SQLCloseCursor fecha um cursor que foi aberto numa instrução e descarta os resultados pendentes.

Syntax

  
SQLRETURN SQLCloseCursor(  
     SQLHSTMT     StatementHandle);  

Arguments

HandleStatement
[Entrada] Identificador do extrato.

Devoluções

SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR ou SQL_INVALID_HANDLE.

Diagnósticos

Quando o SQLCloseCursor devolve SQL_ERROR ou SQL_SUCCESS_WITH_INFO, pode ser obtido um valor SQLSTATE associado chamando SQLGetDiagRec com um HandleType de SQL_HANDLE_STMT e um Handle de StatementHandle. A tabela seguinte lista os valores SQLSTATE normalmente retornados pelo SQLCloseCursor e explica cada um no contexto desta função; a notação "(DM)" precede as descrições dos SQLSTATEs devolvidas pelo Gestor de Drivers. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, salvo indicação em contrário.

SQLSTATE Erro Descrição
01000 Aviso geral Mensagem informativa específica para o condutor. (Função devolve SQL_SUCCESS_WITH_INFO.)
24000 Estado do cursor inválido Nenhum cursor estava aberto no HandleStatement. (Isto é devolvido apenas por um ODBC 3. x condutor.)
HY000 Erro geral Ocorreu um erro para o qual não existia um SQLSTATE específico e para o qual não estava definido nenhum SQLSTATE específico da implementação. A mensagem de erro devolvida pelo SQLGetDiagRec no buffer *MessageText descreve o erro e a sua causa.
HY001 Erro de alocação de memória O driver não conseguia alocar a memória necessária para suportar a execução ou conclusão da função.
HY010 Erro de sequência de funções (DM) Uma função de execução assíncrona era chamada para o handle de ligação associado ao StatementHandle e continuava a ser executada quando esta função era chamada.

(DM) Uma função de execução assíncrona era chamada para o StatementHandle e ainda estava a correr quando esta função foi chamada.

(DM) SQLExecute, SQLExecDirect, SQLBulkOperations ou SQLSetPos era chamado para o StatementHandle e devolvido SQL_NEED_DATA. Esta função era chamada antes de os dados serem enviados para todos os parâmetros ou colunas de dados na execução.
HY013 Erro de gestão de memória A chamada de função não podia ser processada porque os objetos de memória subjacentes não podiam ser acedidos, possivelmente devido a condições de baixa memória.
HY117 A ligação é suspensa devido ao estado desconhecido da transação. Apenas funções de desconexão e de leitura são permitidas. (DM) Para mais informações sobre o estado suspenso, veja Função SQLEndTran.
HYT01 Expirou o tempo limite de ligação O período de timeout da ligação expirou antes de a fonte de dados responder ao pedido. O período de tempo de expiração da ligação é definido através do SQLSetConnectAttr, SQL_ATTR_CONNECTION_TIMEOUT.
IM001 O driver não suporta esta função (DM) O driver associado ao StatementHandle não suporta a função.

Comments

SQLCloseCursor devolve SQLSTATE 24000 (Estado do cursor inválido) se não houver cursor aberto. Chamar SQLCloseCursor é equivalente a chamar SQLFreeStmt com a opção SQL_CLOSE, com a exceção de que SQLFreeStmt com SQL_CLOSE não tem efeito na aplicação se não houver cursor aberto na instrução, enquanto SQLCloseCursor devolve SQLSTATE 24000 (Estado do cursor inválido).

Note

Se for um ODBC 3. Aplicação x a funcionar com um ODBC 2. x chama SQLCloseCursor quando nenhum cursor está aberto, SQLSTATE 24000 (estado do cursor inválido) não é devolvido, porque o Gestor de Drivers mapeia SQLCloseCursor para SQLFreeStmt com SQL_CLOSE.

Para mais informações, veja Fechar o Cursor.

Exemplo de código

Ver Função SQLBrowseConnect e Função SQLConnect.

Para obter informações sobre Veja
Cancelamento do processamento de extratos Função SQLCancel
Libertar uma pega Função SQLFreeHandle
Processamento de múltiplos conjuntos de resultados Função SQLMoreResults