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