[firebase-br] Erro em FOR EXECUTE STATEMENT

Renato Miranda renato.smiranda em gmail.com
Seg Mar 13 18:33:04 -03 2006


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



Mais detalhes sobre a lista de discussão lista