[firebase-br] Comando SUSPEND?
Joubert Rinaldi Vieira
rinaldi.vieira em gmail.com
Sex Jun 15 18:25:35 -03 2007
Amigos,
Fiz a procedure abaixo usando os exemplos e dicas encontradas no ng:
CREATE PROCEDURE SP_ATUALIZACAO (
pcodigorca varchar(10))
returns (
rregistro varchar(2),
rchave varchar(40),
rconteudo varchar(1024))
as
declare variable vachou integer;
declare variable vdata_inicio_processamento date;
declare variable vhora_inicio_processamento time;
declare variable vdata_ultima_conexao date;
declare variable vhora_ultima_conexao time;
declare variable vnumero_conexoes integer;
begin
vdata_inicio_processamento = Current_date;
vhora_inicio_processamento = Current_time;
Select Count(*) From RCA Where RCA.CODIGO = :pCodigoRCA Into :vAchou;
if (vAchou = 0) then
Begin
Insert Into RCA
(CODIGO, DATA, HORA, NUMERO_CONEXOES)
Values
(:pcodigorca, :vdata_inicio_processamento,
:vhora_inicio_processamento, 0);
End
Select RCA.DATA,
RCA.HORA,
RCA.NUMERO_CONEXOES
From RCA
Where RCA.CODIGO = :pcodigorca
Into :vdata_ultima_conexao, :vhora_ultima_conexao, :vnumero_conexoes;
For
Select TARGET.REGISTRO, TARGET.CHAVE, TARGET.CONTEUDO
From TARGET
Where (TARGET.data >= :vdata_ultima_conexao)
and (TARGET.hora >= :vhora_ultima_conexao)
Order By TARGET.registro, TARGET.chave
Into :rregistro, :rchave, :rconteudo
Do
Begin
suspend;
End
update RCA set
RCA.data = :vdata_inicio_processamento,
RCA.hora = :vhora_inicio_processamento,
RCA.numero_conexoes = :vnumero_conexoes+1
Where
RCA.CODIGO = :pcodigorca;
end^
Porem no meu entendimento deveria colocar um comando "SUSPEND" depois do
"Update" e quando faço isso é retornado linhas duplicadas. Preciso entender
quando devo colocar o SUSPEND, alguem tem algum dica de livro artigo mais
aprofundado ou etc.
att
Joubert
--
MSN: jcombr em hotmail.com
Mais detalhes sobre a lista de discussão lista