[firebase-br] Erro em FOR EXECUTE STATEMENT (Opa!)

dvdmengarda em hotmail.com dvdmengarda em hotmail.com
Seg Mar 13 20:08:17 -03 2006


Cantu,

Conforme você observou fiz a alteração no sql e agora sumiu aquela mensagem 
de erro, porém ainda assim não consigo executar a SP. A variável para o FOR 
EXECUTE STATEMENT ficou assim:

v_script = 'select cast(t.datavencimento as date), t.numerotitulo, 
t.valorparcela from ctarec t where (t.codigoorigem = ' || :codigo_origem || 
' and t.dataemissao = ' || "v_data" || ')';



Se eu elimino [ ' and t.dataemissao = ' || "v_data" ||  ] da variável 
funciona normalmente. Com a parte da data apresenta a seguinte mensagem de 
erro pelo ibexpert:



'Invalid token.

Dynamic SQL Error.

SQL error code = -104.

Token unknown - line 1, char 142.

00.'



O campo dataemissao e o parametro v_data são timestamp e estou usando aspas 
duplas para v_data. Fiz o mesmo teste sem o uso do alias T para os campos e 
não muda nada. Estou usando Firebird 1.5.3.



Muito obrigado.





David





----- Original Message ----- 
From: "Carlos H. Cantu (TeamFB)" <listas em warmboot.com.br>
To: "FireBase" <lista em firebase.com.br>
Sent: Monday, March 13, 2006 5:52 PM
Subject: Re: [firebase-br] Erro em FOR EXECUTE STATEMENT (Opa!)


Olhe o SQL que está sendo gerado.

Datas tem que estar sempre entre '', e no seu caso, não estão.

[]s
Cantu (Membro do TeamFB - FireBase)
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

dhc> Samuel,

dhc> É exatamente isso que está ocorrendo por aqui.

dhc> Agora, como é que posso deixar esse script de forma que resolva essa
dhc> questão?

dhc> Grato.


dhc> David


dhc> ----- Original Message ----- 
dhc> From: "samuel ferreira" <samuel.peres.ferreira em gmail.com>
dhc> To: "FireBase" <lista em firebase.com.br>
dhc> Sent: Monday, March 13, 2006 1:42 PM
dhc> Subject: Re: [firebase-br] Erro em FOR EXECUTE STATEMENT (Opa!)


dhc> ola

dhc> ja passei por isso. era uma variavel numerica q eu estava concatenando 
com
dhc> string.
dhc> vc esta unindo strings com variaveis tipo data no ' v_script = '

dhc> eu contornei o erro passando tudo pra string


dhc> samuel



dhc> Em 13/03/06, dvdmengarda em hotmail.com <dvdmengarda em hotmail.com> 
escreveu:
>>
>> Desculpem-me, segue a mensagem correta:
>>
>>
>> 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
>>
dhc> ______________________________________________
dhc> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
dhc> Para editar sua configuração na lista, use o endereço
dhc> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
dhc> Para consultar mensagens antigas: http://firebase.com.br/pesquisa

dhc> ______________________________________________
dhc> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
dhc> Para editar sua configuração na lista, use o endereço
dhc> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
dhc> Para consultar mensagens antigas: http://firebase.com.br/pesquisa


______________________________________________
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