[firebase-br] Erro em FOR EXECUTE STATEMENT (Opa!)
dvdmengarda em hotmail.com
dvdmengarda em hotmail.com
Seg Mar 13 10:02:01 -03 2006
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;
Mais detalhes sobre a lista de discussão lista