RES: [firebase-br] If dentro de Stored Procedure

Ton hevertonc em hotmail.com
Qua Nov 23 16:33:42 -03 2005


   Tenta o seguinte: A parte alterada está com setas:

CREATE PROCEDURE SPR_atualiza_status(
    IDUSUARIO INTEGER,
    IDSTATUS  INTEGER,
    DELOCAL     VARCHAR(255),
    DTINICIO   TIMESTAMP,
    DTFIM      TIMESTAMP
)
AS
>>Declare variable CONT_USU Integer;
BEGIN
>>    select count(*)
>>      from usuariostatus
>>     where idUsuario = :IDUSUARIO
>>      into :CONT_USU;

>>    if (:CONT_USU = 0) THEN
     BEGIN
       insert into usuariostatus
       (idUsuario, idStatus, deLocal, dtInicio, dtFim)
       values
       (:idUsuario, :idStatus, :deLocal, :dtInicio, :dtFim);
     END
     ELSE BEGIN
       update usuariostatus set
       idStatus = :idStatus,
       deLocal = :deLocal,
       dtInicio = :dtInicio,
       dtFim = :dtFim
       where idUsuario = :idUsuario;
     END
END

        Ton
Analista de Sistemas
 DotCom Informática

"A informação não é um produto,
mas sim a matéria prima." (Ton)

-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Frederico Fernandes
Enviada em: quarta-feira, 23 de novembro de 2005 16:22
Para: lista em firebase.com.br
Assunto: [firebase-br] If dentro de Stored Procedure

Quando teno criar a Stored Procedure abaixo me da um erro na linha do "if 
(select count(*)....."
Me diz :

"Token unknown - line 10, char 9.
select."

O que tem de errado nessa Stored Procedure minha ???

CREATE PROCEDURE SPR_atualiza_status(
    IDUSUARIO INTEGER,
    IDSTATUS  INTEGER,
    DELOCAL     VARCHAR(255),
    DTINICIO   TIMESTAMP,
    DTFIM      TIMESTAMP
)
AS
BEGIN
    if (select count(*) from usuariostatus where idUsuario = :IDUSUARIO) = 0

THEN
     BEGIN
       insert into usuariostatus
       (idUsuario, idStatus, deLocal, dtInicio, dtFim)
       values
       (:idUsuario, :idStatus, :deLocal, :dtInicio, :dtFim);
     END
     ELSE BEGIN
       update usuariostatus set
       idStatus = :idStatus,
       deLocal = :deLocal,
       dtInicio = :dtInicio,
       dtFim = :dtFim
       where idUsuario = :idUsuario;
     END
END







Mais detalhes sobre a lista de discussão lista