[firebase-br] RES: RES: Ajuda com Procedure

Ivan Guimarães Meirelles igmeirelles em gmail.com
Seg Jul 6 10:54:37 -03 2009


Olá Cássio...

Se vc só quer saber se tem relação... então use COUNT ao invés de usar
COALESCE veja:

SELECT COUNT(1) FROM LOCACOES LOC
   WHERE ID_LOCACAO IN (SELECT ID_ORIGEM
                        FROM   LANCAMENTOS
                        WHERE  ID_ORIGEM = LOC.ID_lOCACAO)
                               AND LOC.ID_LOCACAO =:ID_LOCACAO INTO :EXISTE;

Ai sim vc pode verificar se a variável existe retorna zero

IF (:EXISTE = 0) THEN...

Espero ter ajudado.
Um abraço...


-----Mensagem original-----
De: lista-bounces em firebase.com.br [mailto:lista-bounces em firebase.com.br] Em
nome de Cássio
Enviada em: segunda-feira, 6 de julho de 2009 09:11
Para: lista em firebase.com.br
Assunto: Re: [firebase-br] RES: Ajuda com Procedure

Estou tentando executar minha SP conforme já falamos abaixo.
Se eu a chamo pelo Execute Procedure nomesp(codigo); executa o delete se 
retornar.

quando faço com select para obter o retorno, ele retorna o que deve 
retornar porem não executa o delete.

select * from pr_minha(3); -- assim só retorna a msg mas não executa o 
comando delete.

o que está faltando?



Magno System escreveu:
> Não está dando certo porque quando não existe retorna NULL e não zero.
> 
> Tente assim:
> 
> SELECT COALESCE(LOC.ID_LOCACAO, 0) FROM LOCACOES LOC
>   WHERE ID_LOCACAO IN (SELECT ID_ORIGEM
>                        FROM   LANCAMENTOS
>                        WHERE  ID_ORIGEM=LOC.ID_lOCACAO)
>                               AND LOC.ID_LOCACAO =:ID_LOCACAO INTO
:EXISTE;
> 
> 
> ----- Original Message ----- From: "Ivan Guimarães Meirelles" 
> <igmeirelles em gmail.com>
> To: "'FireBase'" <lista em firebase.com.br>
> Sent: Saturday, July 04, 2009 6:56 PM
> Subject: [firebase-br] RES: Ajuda com Procedure
> 
> 
> Olá Cássio...
> Não seria interessante usar FOREIGN KEY para controlar isso ??
> 
> Um abraço...
> 
> -----Mensagem original-----
> De: lista-bounces em firebase.com.br 
> [mailto:lista-bounces em firebase.com.br] Em
> nome de Cássio
> Enviada em: sábado, 4 de julho de 2009 10:26
> Para: lista em firebase.com.br
> Assunto: [firebase-br] Ajuda com Procedure
> 
> Opa.
> Quero fazer uma pr que exclua um registro de uma tabela caso não exista
> este registro não esteja em outra. fiz assim, mas sem sucesso.
> 
> 
> SET TERM ^ ;
> 
> RECREATE PROCEDURE PR_EXCLUIR_LOC (
>  ID_LOCACAO BIGINT)
> AS
> DECLARE VARIABLE EXISTE INTEGER;
> 
> BEGIN
>   --verifico se há locação em lançamentos e adicionado o resutado no
> inteiro existe.
>   SELECT LOC.ID_LOCACAO FROM LOCACOES LOC
>   WHERE ID_LOCACAO IN (SELECT ID_ORIGEM
>                        FROM   LANCAMENTOS
>                        WHERE  ID_ORIGEM=LOC.ID_lOCACAO)
>                               AND LOC.ID_LOCACAO =:ID_LOCACAO INTO
:EXISTE;
> 
>    IF (:EXISTE = 0) THEN --caso não exista então apaga a locação...
>      BEGIN
>           DELETE FROM LOCACOES WHERE LOCACOES.ID_LOCACAO =:ID_LOCACAO;
>     END
> END^
> 
> SET TERM ; ^
> 
> chamo por fora assim:
> execute procedure pr_excluir_loc(5);
> 
> retorna "The command(s) completed successfully."
> mas o registro da locação continua la.
> 
> 
> obrigado!
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> 


______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para saber como gerenciar/excluir seu cadastro na lista, use:
http://www.firebase.com.br/fb/artigo.php?id=1107
Para consultar mensagens antigas: http://firebase.com.br/pesquisa





Mais detalhes sobre a lista de discussão lista