[firebase-br] RES: RES: Ajuda com Procedure
Ivan Guimarães Meirelles
igmeirelles em gmail.com
Seg Jul 6 11:08:16 -03 2009
Olá Cássio...
Tente assim:
RECREATE PROCEDURE PR_EXCLUIR_LOC (ID_LOCACAO BIGINT)
RETURNS (RESPOSTA CHAR(1))
AS
DECLARE VARIABLE EXISTE INTEGER;
BEGIN
SELECT COUNT(1) FROM LOCACOES LOC
WHERE ID_LOCACAO IN (SELECT ID_ORIGEM
FROM LANCAMENTOS LAN
WHERE LAN.ID_ORIGEM = LOC.ID_lOCACAO)
AND LOC.ID_LOCACAO = :ID_LOCACAO INTO :EXISTE;
IF (:EXISTE = 0) THEN
BEGIN
DELETE FROM LOCACOES WHERE LOCACOES.ID_LOCACAO
=:ID_LOCACAO;
RESPOSTA = 'S';
END
ELSE
RESPOSTA = 'N';
END
Ai quando vc executar essa SP... como ela tem um retorno, vc terá quer fazer
assim:
Select resposta from PR_ercluir_loc(3)...isso retornará um único registro
com o campo reposta trazendo 'S' ou 'N' se foi excluído ou não.
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