[firebase-br] Erro em FOR EXECUTE STATEMENT
dvdmengarda em hotmail.com
dvdmengarda em hotmail.com
Seg Mar 13 19:13:37 -03 2006
Olá Renato,
Grato pela atenção.
Na verdade eu postei aqui só uma forma reduzida da stored procedure, apenas
para explicar a questão da concatenação e nem prestei atenção na endentação
BEGIN / END.
O Cantu já postou a provável causa do problema, mas mesmo com a solução dele
ainda não conseguí resolver o problema. Mas não vou desistir.
Abraços.
David
----- Original Message -----
From: "Renato Miranda" <renato.smiranda em gmail.com>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, March 13, 2006 6:33 PM
Subject: Re: [firebase-br] Erro em FOR EXECUTE STATEMENT
Tudo bem, David ?
Não faltaria um BEGIN por aí ?
if (tipo_venda = 1) then
BEGIN
for select
contacliente, contavendas, valorduplicata from parcelas where
(dataemissao = ' || :data_emissao || ')'
into
:debito,
..
END ELSE
BEGIN
for select
contacliente, contavendas, valortitulo from vendas where (dataemissao =
' || :data_emissao || ' and cancelamento = 1)'
into
:debito,
:credito,
:valor
..
END
Abraços,
RMiranda
Em 13/03/06, dvdmengarda em hotmail.com <dvdmengarda em hotmail.com> escreveu:
>
> Criei a SP abaixo pelo ibexpert sem qualquer problema na compilação.
> Quando executo a SP, o ibexpert reporta o seguinte erro:
>
> 'expression evaluation not supported
> .
> expression evaluation not supported.'
>
> Alterando a procedure e fazendo a utilização de FOR SELECT ... DO com o
> mesmo script do anterior a procedure executa normalmente. Existe alguma
> limitação para o "for execute statement"?
>
> Grato pela atenção.
>
>
> David
>
>
> *****************************************************************************************************************************************
> /* usando "for execute statement" /*
> create procedure geralcto(tipo_venda varchar(2), data_emissao date)
> returns (numero_lct integer, data_lct date, debito varchar(10), credito
> varchar(10), valor numeric(10, 2))
> as
> declare variable v_script varchar(512);
> begin
> data_lct = data_emissao;
> if (tipo_venda = 1) then
> v_script = 'select contacliente, contavendas, valorduplicata from
> parcelas where (dataemissao = ' || :data_emissao || ')';
> else
> v_script = 'select contacliente, contavendas, valortitulo from vendas
> where (dataemissao = ' || :data_emissao || ' and cancelamento = 1)';
> for execute statement
> v_script
> into
> :debito,
> :credito,
> :valor
> do
> begin
> numero_lct = numero_lct + 1;
> suspend;
> end
> end;
>
>
> *****************************************************************************************************************************************
> /* usando "for select ... do" /*
> create procedure geralcto(tipo_venda varchar(2), data_emissao date)
> returns (numero_lct integer, data_lct date, debito varchar(10), credito
> varchar(10), valor numeric(10, 2))
> as
> begin
> data_lct = data_emissao;
> if (tipo_venda = 1) then
> for select
> contacliente, contavendas, valorduplicata from parcelas where
> (dataemissao = ' || :data_emissao || ')'
> into
> :debito,
> :credito,
> :valor
> do
> begin
> numero_lct = numero_lct + 1;
> suspend;
> end
>
> else
> for select
> contacliente, contavendas, valortitulo from vendas where (dataemissao
> = ' || :data_emissao || ' and cancelamento = 1)'
> into
> :debito,
> :credito,
> :valor
> do
> begin
> numero_lct = numero_lct + 1;
> suspend;
> end
> end;
> ______________________________________________
> 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
>
--
Abraços,
RMiranda
______________________________________________
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