Função SQLCancelHandle
de conformidade
Versão introduzida: Conformidade de padrões do ODBC 3.8: Nenhum
Espera-se que a maioria dos drivers ODBC 3.8 (e posterior) implemente essa função. Se um driver não fizer isso, uma chamada para SQLCancelHandle com um identificador de conexão no parâmetro Handle retornará SQL_ERROR com um SQLSTATE de IM001 e a mensagem 'Driver não dá suporte a essa função'' Uma chamada para SQLCancelHandle com um identificador de instrução como o parâmetro Handle será mapeado para uma chamada para SQLCancel pelo Gerenciador de Driver e poderá ser processado se o driver implementa sqlcancel. Um aplicativo pode usar SQLGetFunctions para determinar se um driver dá suporte a SQLCancelHandle.
de Resumo do
SQLCancelHandle cancela o processamento em uma conexão ou instrução. O Gerenciador de Driver mapeia uma chamada para SQLCancelHandle para uma chamada para SQLCancel quando HandleType é SQL_HANDLE_STMT.
Sintaxe
SQLRETURN SQLCancelHandle(
SQLSMALLINT HandleType,
SQLHANDLE Handle);
Argumentos
HandleType
[Entrada] O tipo do identificador no qual cancelar o processamento. Os valores válidos são SQL_HANDLE_DBC ou SQL_HANDLE_STMT.
manipular
[Entrada] O identificador no qual cancelar o processamento.
Se Handle não for um identificador válido do tipo especificado por HandleType, SQLCancelHandle retornará SQL_INVALID_HANDLE.
Retorna
SQL_SUCCESS, SQL_SUCCESS_WITH_INFO, SQL_ERROR ou SQL_INVALID_HANDLE.
Diagnostics
Quando
A tabela a seguir lista os valores SQLSTATE normalmente retornados por SQLCancelHandle e explica cada um deles no contexto dessa função; a notação "(DM)" precede as descrições de SQLSTATEs retornadas pelo Gerenciador de Driver. O código de retorno associado a cada valor SQLSTATE é SQL_ERROR, a menos que observado o contrário.
Se SQLCancelHandle for chamado com HandleType definido como SQL_HANDLE_STMT, ele poderá retornar qualquer SQLSTATE que possa ser retornado pela função SQLCancel.
Comentários
Essa função é semelhante a SQLCancel, mas pode usar uma conexão ou identificador de instrução como um parâmetro, em vez de apenas um identificador de instrução. O Gerenciador de Driver mapeia uma chamada para SQLCancelHandle para uma chamada para SQLCancel quando HandleType é SQL_HANDLE_STMT. Isso permite que os aplicativos usem SQLCancelHandle para cancelar operações de instrução mesmo que o driver não implemente SQLCancelHandle.
Para obter mais informações sobre como cancelar uma operação de instrução, consulte de função SQLCancel.
Se não houver operações em andamento no Handle a chamada para SQLCancelHandle não terá efeito.
SQLCancelHandle em um identificador de conexão pode cancelar os seguintes tipos de processamento:
Uma função em execução assíncrona na conexão.
Uma função em execução no identificador de conexão em outro thread.
Quando SQLCancelHandle é chamado para cancelar uma função em execução de forma assíncrona em uma conexão, os registros de diagnóstico postados por SQLCancelHandle são acrescentados àqueles retornados pela operação que está sendo cancelada; SQLCancelHandle não retorna registros de diagnóstico, no entanto, ao cancelar uma função em execução em uma conexão em outro thread.
Usar SQLCancelHandle para cancelar SQLEndTran pode colocar a conexão em estado suspenso. Para obter mais informações sobre o estado suspenso, consulte de função SQLEndTran .
Nota
Para obter informações sobre como usar SQLCancelHandle em um aplicativo que será implantado em um sistema operacional Windows com mais de 7 anos, consulte matriz de compatibilidade.
Cancelando Connection-Related processamento assíncrono
Se uma função retornar SQL_STILL_EXECUTING, um aplicativo poderá chamar SQLCancelHandle para cancelar a operação. Se a solicitação de cancelamento for bem-sucedida, SQLCancelHandle retornará SQL_SUCCESS. Isso não significa que a função original foi cancelada; indica que a solicitação de cancelamento foi processada. O driver e a fonte de dados determinam quando ou se a operação foi cancelada. O aplicativo deve continuar a chamar a função original até que o código de retorno não seja SQL_STILL_EXECUTING. Se a função original tiver sido cancelada, o código de retorno será SQL_ERROR e SQLSTATE HY008 (Operação cancelada). Se a função original tiver concluído seu processamento normal (não foi cancelada), o código de retorno será SQL_SUCCESS ou SQL_SUCCESS_WITH_INFO ou SQL_ERROR e um SQLSTATE diferente de HY008 (Operação cancelada), se a função original falhar.
Cancelando funções em execução em outro thread
Em um aplicativo multithread, o aplicativo pode cancelar uma operação em execução em outro thread. Para cancelar a operação, o aplicativo chama SQLCancelHandle com o identificador usado pela função, mas em um thread diferente. O driver e o sistema operacional determinam como a operação é cancelada. O código de retorno SQLCancelHandle indica se o driver processou a solicitação, retornando SQL_SUCCESS ou SQL_ERROR (nenhuma informação de diagnóstico é retornada). Se o processamento na função original for cancelado, a função original retornará SQL_ERROR e SQLSTATE HY008 (Operação cancelada).
Se uma função estiver sendo executada quando SQLCancelHandle for chamado em outro thread para cancelar a função, é possível que a função tenha êxito e retorne SQL_SUCCESS antes que o cancelamento possa entrar em vigor. Uma chamada para SQLCancelHandle não terá efeito se a operação for concluída antes de SQLCancelHandle puder cancelar a operação.
Funções relacionadas
Consulte Também
referência da API ODBC
arquivos de cabeçalho ODBC
execução assíncrona (método de sondagem)