[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