Como cancelar processo demorado?
aê feras, blz?, Eu fiz a seguinte SP:
CREATE PROCEDURE SP_GERA_ARQUIVO
AS
begin
Delete from T_ARQUIVO ;
insert into T_ARQUIVO
select * from V_ARQUIVO ;
end
update T_ARQUIVO set DESPREZA = ´S´ where DESPREZA = ´X´ ;
end
onde faço um insert em uma tabela após selecionar uma view, este processo demora mais ou menos uns 5 minutos
devido ao tamanho de registros selecionados pela view. então minha dúvida é a seguinte:
Tem como - caso queira - o usuário cancelar este processo? eu tentei de várias formas, coloquei o POST_EVENT
mas como o insert não é sequencial então não é possível interceptar a linha para que a aplicação ser notificada,
tentei tb criando Thread mas tb não funcionou, o Application.Processmessage tb teria que tem teria que ter algo
como leitura sequencial etc...
Vlw quem puder me ajudar! abraço a todos
CREATE PROCEDURE SP_GERA_ARQUIVO
AS
begin
Delete from T_ARQUIVO ;
insert into T_ARQUIVO
select * from V_ARQUIVO ;
end
update T_ARQUIVO set DESPREZA = ´S´ where DESPREZA = ´X´ ;
end
onde faço um insert em uma tabela após selecionar uma view, este processo demora mais ou menos uns 5 minutos
devido ao tamanho de registros selecionados pela view. então minha dúvida é a seguinte:
Tem como - caso queira - o usuário cancelar este processo? eu tentei de várias formas, coloquei o POST_EVENT
mas como o insert não é sequencial então não é possível interceptar a linha para que a aplicação ser notificada,
tentei tb criando Thread mas tb não funcionou, o Application.Processmessage tb teria que tem teria que ter algo
como leitura sequencial etc...
Vlw quem puder me ajudar! abraço a todos
Ronaldo Pimenta
Curtidas 0
Respostas
Aroldo Zanela
29/12/2006
Colega,
Como o processo ocorre no servidor (Procedimento armazenado), você pode utilizar uma tabela de parâmetros para consultar o ´status´ de uma coluna antes de efetuar a inserção.
Ex:
Como o processo ocorre no servidor (Procedimento armazenado), você pode utilizar uma tabela de parâmetros para consultar o ´status´ de uma coluna antes de efetuar a inserção.
Ex:
if tabelaX.ColunaX = 1 begin ... insert end
GOSTEI 0
Ronaldo Pimenta
29/12/2006
Olá! Aroldo, Feliz 2007!!! rpz, bem que eu tentei entender a idéia que me passou mas ainda não consegui, como vc disse, este é um procedimento armazenado e a forma de notificar a aplicação corretamente seria através do POST_EVENT, mas após ter dado o comando insert não me restou mais nenhuma alternativa para que interceptasse o código no procedimento para que tomasse alguma decisão. Grato mesmo pela tua resposta.
GOSTEI 0
Aroldo Zanela
29/12/2006
Colega,
Eu tinha imaginado uma situação de inserção em massa. Mas no caso de ações de DML isoladas, basta utilizar Commit e Rollback, conforme o caso e definir um nível de atomicidade que satisfaça suas condições.
Eu tinha imaginado uma situação de inserção em massa. Mas no caso de ações de DML isoladas, basta utilizar Commit e Rollback, conforme o caso e definir um nível de atomicidade que satisfaça suas condições.
GOSTEI 0