[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