[firebase-br] Ajuda com Procedure
Sandro Souza
escovadordebits em gmail.com
Qua Jul 15 10:51:25 -03 2009
Bom dia/tarde Cássio.
Grande Cássio, aproveitando o que já foi postado nesse tópico, faço aqui a
minha humilde sugestão:
SET TERM ^ ;
CREATE OR ALTER PROCEDURE PR_EXCLUIR_LOC(
-- Código da locação a ser excluída.
ID_LOCACAO BIGINT
)RETURNS(
-- Informa se excluiu ('S') ou não ('N') alguma locação.
EXCLUIU CHAR(1)
)AS
BEGIN
-- Exclui a locação informada.
DELETE FROM LOCACOES LO WHERE
(LO.ID_LOCACAO = :ID_LOCACAO)AND
EXISTS(SELECT LA.ID_ORIGEM FROM LANCAMENTOS LA WHERE LA.ID_ORIGEM =
LO.ID_LOCACAO);
-- Verifica se houve ou não deleção.
IF (ROW_COUNT = 0) THEN
-- Não houve.
EXCLUIU = 'N';
ELSE
-- Houve.
EXCLUIU = 'S';
-- Envia o resultado.
SUSPEND;
END^
SET TERM ; ^
Tente executar essa procedure pelo comando "EXECUTE PROCEDURE" que pelo
SELECT.
Lembre-se de efetivar a transação ao final (commit).
Espero ter ajudado mais que atrapalhado. :D
2009/7/4 Cássio <cassio.hc em gmail.com>
> 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
>
Mais detalhes sobre a lista de discussão lista