[firebase-br] RES: Ajuda com Procedure

Cássio cassio.hc em gmail.com
Dom Jul 5 20:41:22 -03 2009


não estou usnado FK porque tenho mais tabelas do tipo locações que 
relacionam com ID_Origem, ou seja, tenho vários tipos de origens.

vlw.


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
> 





Mais detalhes sobre a lista de discussão lista