Como cancelar processo demorado?

Delphi

29/12/2006

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


Ronaldo Pimenta

Ronaldo Pimenta

Curtidas 0

Respostas

Aroldo Zanela

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:

if tabelaX.ColunaX = 1
begin
... insert
end



GOSTEI 0
Ronaldo Pimenta

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

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.


GOSTEI 0
POSTAR