[firebase-br] If dentro de Stored Procedure

Renato - Eficaz Informática renato em eturbo.com.br
Qua Nov 23 16:38:17 -03 2005


até onde eu já apanhei, esse select não pode fazer parte da condição IF 
THEN, vc terá que fazer o select descarregar o valor em uma variavel e 
depois usa-la na condição, ficaria assim:

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

    if (v_contador = 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



----- Original Message ----- 
From: "Frederico Fernandes" <fredy992 em hotmail.com>
To: <lista em firebase.com.br>
Sent: Wednesday, November 23, 2005 4:22 PM
Subject: [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
>
>
>
>


--------------------------------------------------------------------------------


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista