Re: [firebase-br] Por que Into não funciona neste select

Jeferson Oliveira jefersonfoliveira em gmail.com
Sáb Abr 22 09:58:53 -03 2006


Washington,

O sentença SQL passada como parâmetro na função "exists" é utilizada apenas
para testar a existência ou não de registros que atendam às condições
expecificadas, e não retornam valor para uma variável.

Você pode atribuir o valor antes, e então testar o valor da variável.
Exemplo:

begin
  select coalesce(b.aux_nome, c.dep_nome)
  from convenios_medicos a left join auxiliares b on a.com_codbarra =
b.aux_codbarra left join dependentes c on a.com_codbarra = c.dep_codbarra
  where (com_aux_codigo = new.com_aux_codigo) and (com_grau = 'T') and
(com_cod_convenio = new.com_cod_convenio)
  into :wnome;

  if (:wnome <> '') then
    exception exception_msg 'O conveniado '||:wnome||' já é o titular deste
convênio.';
end

Abraço!
Jeferson Oliveira


Em 21/04/06, NextCorp Informatica <nextcorp em terra.com.br> escreveu:
>
> Caros colegas
>
> Estou fazendo a seguinte trigger para saber se um determinado usuário do
> mesmo convenio e codigo já existe no cadastro de convenios medicos, mas não
> funciona por causa do into alguem sabe por que.
>
> ---------- STATEMENT ----------
>
> ALTER TRIGGER TR_VERIF_TIT_CONVMED_BIU0
> ACTIVE BEFORE INSERT OR UPDATE POSITION 0
> AS
> declare variable wnome varchar(25);
> begin
> if (exists (
>     select Coalesce(b.aux_nome, c.dep_nome)
>     from convenios_medicos a Left Join auxiliares b On a.com_codbarra =
> b.aux_codbarra Left Join dependentes c on a.com_codbarra = c.dep_codbarra
>     where (com_aux_codigo = new.com_aux_codigo) and (com_grau = 'T') and
> (com_cod_convenio = new.com_cod_convenio)
>     into :wnome) then
>        exception exception_msg 'O conveniado '||:wnome||' já é o titular
> deste convênio.';
> end
>
>
> ---------- ERROR MESSAGE ----------
>
> Invalid token.
> Erro de SQL dinamico.
> codigo do erro SQL = -104.
> Simbolo desconhecido - linha 10, caractere 6.
> into.
>
> Atenciosamente
>
> Washington A. Müller da Silva
>
> #####################
> NextCorp Informática Ltda
> www.nextcorp.com.br
> nextcorp em terra.com.br
> 0 xx (51)-3589-3690
> ####################
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
> Para editar sua configuração na lista, use o endereço
> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>



Mais detalhes sobre a lista de discussão lista