Subject | Execute Statement Problem |
---|---|
Author | william_yuwei |
Post date | 2005-12-20T22:13:55Z |
Hi, All
I have the following code in one of my store procedure
REPORT_TARIFF(divisionid, excludeinvoices):
sql_text = 'select m.DESCRIPTION, t.CODE, c.CODE, sum(id.QTY),
sum(id.AMOUNT) '
|| 'from INVOICE i ' ||
'inner join INVOICE_DETAIL id on id.INVOICE_ID = i.ID and
' ||
'id.PART_ID is null and id.ADJUSTINVENTORY <> ''B'' '||
'inner join INVENTORY iv on iv.ID = id.INVENTORY_ID ' ||
'inner join COUNTRY c on c.ID = iv.COUNTRY_ID ' ||
'inner join MATERIAL m on m.ID = iv.MATERIAL_ID ' ||
'inner join TARIFF t on t.ID = m.TARIFF_ID ';
if (divisionid > 0) then
sql_text = sql_text ||
'where i.DIVISION_ID = ' || divisionid || ' and ' ||
'i.POSTED = ''Y'' and i.INVOICE_NO > ' || :last_tariff_invoiceno;
else
sql_text = sql_text ||
'where i.POSTED = ''Y'' and i.INVOICE_NO > ' ||
:last_tariff_invoiceno;
if (excludeinvoices <> '') then
sql_text = sql_text ||
' and i.INVOICE_NO not in (' || excludeinvoices || ') ';
sql_text = sql_text ||
' group by m.DESCRIPTION, t.CODE, c.CODE';
/*
for select m.DESCRIPTION, t.CODE, c.CODE, sum(id.QTY), sum(id.AMOUNT)
from INVOICE i
inner join INVOICE_DETAIL id on id.INVOICE_ID = i.ID and
id.PART_ID is null and id.ADJUSTINVENTORY <> 'B'
inner join INVENTORY iv on iv.ID = id.INVENTORY_ID
inner join COUNTRY c on c.ID = iv.COUNTRY_ID
inner join MATERIAL m on m.ID = iv.MATERIAL_ID
inner join TARIFF t on t.ID = m.TARIFF_ID
where ((:divisionid <= 0) or (i.DIVISION_ID = :divisionid)) and
i.POSTED = 'Y' and i.INVOICE_NO > :last_tariff_invoiceno
group by m.DESCRIPTION, t.CODE, c.CODE
*/
for execute statement sql_text
into :DESCRIPTION, :TARIFF_CODE, :COUNTRY_CODE, :QTY,
:INVOICE_AMOUNT
do
begin
suspend;
end
1)What is strange is that, when I debug this store procedure under
IBExpert, everything work just fine, but when I try to run the store
procedure in the SQL editor, select * from report_tariff(-1, ''), I
got: Unsuccessful execute caused by an unavailable resource. Variable
type (position 3) in EXECUTE STATMENT 'select m.DESCRIPTION, t.CODE,
c.CODE, sum(id.QYT),' INTO does not match return.
2)When I using my application against "select * from
report_tariffjournal(-1, '')" I got error like: unexpected end of
command, Dyanamic SQL Error, Error Code: 249(100000) Invalid token SQL
Error code = -104"
What am I doing wrong?
Thanks
William
I have the following code in one of my store procedure
REPORT_TARIFF(divisionid, excludeinvoices):
sql_text = 'select m.DESCRIPTION, t.CODE, c.CODE, sum(id.QTY),
sum(id.AMOUNT) '
|| 'from INVOICE i ' ||
'inner join INVOICE_DETAIL id on id.INVOICE_ID = i.ID and
' ||
'id.PART_ID is null and id.ADJUSTINVENTORY <> ''B'' '||
'inner join INVENTORY iv on iv.ID = id.INVENTORY_ID ' ||
'inner join COUNTRY c on c.ID = iv.COUNTRY_ID ' ||
'inner join MATERIAL m on m.ID = iv.MATERIAL_ID ' ||
'inner join TARIFF t on t.ID = m.TARIFF_ID ';
if (divisionid > 0) then
sql_text = sql_text ||
'where i.DIVISION_ID = ' || divisionid || ' and ' ||
'i.POSTED = ''Y'' and i.INVOICE_NO > ' || :last_tariff_invoiceno;
else
sql_text = sql_text ||
'where i.POSTED = ''Y'' and i.INVOICE_NO > ' ||
:last_tariff_invoiceno;
if (excludeinvoices <> '') then
sql_text = sql_text ||
' and i.INVOICE_NO not in (' || excludeinvoices || ') ';
sql_text = sql_text ||
' group by m.DESCRIPTION, t.CODE, c.CODE';
/*
for select m.DESCRIPTION, t.CODE, c.CODE, sum(id.QTY), sum(id.AMOUNT)
from INVOICE i
inner join INVOICE_DETAIL id on id.INVOICE_ID = i.ID and
id.PART_ID is null and id.ADJUSTINVENTORY <> 'B'
inner join INVENTORY iv on iv.ID = id.INVENTORY_ID
inner join COUNTRY c on c.ID = iv.COUNTRY_ID
inner join MATERIAL m on m.ID = iv.MATERIAL_ID
inner join TARIFF t on t.ID = m.TARIFF_ID
where ((:divisionid <= 0) or (i.DIVISION_ID = :divisionid)) and
i.POSTED = 'Y' and i.INVOICE_NO > :last_tariff_invoiceno
group by m.DESCRIPTION, t.CODE, c.CODE
*/
for execute statement sql_text
into :DESCRIPTION, :TARIFF_CODE, :COUNTRY_CODE, :QTY,
:INVOICE_AMOUNT
do
begin
suspend;
end
1)What is strange is that, when I debug this store procedure under
IBExpert, everything work just fine, but when I try to run the store
procedure in the SQL editor, select * from report_tariff(-1, ''), I
got: Unsuccessful execute caused by an unavailable resource. Variable
type (position 3) in EXECUTE STATMENT 'select m.DESCRIPTION, t.CODE,
c.CODE, sum(id.QYT),' INTO does not match return.
2)When I using my application against "select * from
report_tariffjournal(-1, '')" I got error like: unexpected end of
command, Dyanamic SQL Error, Error Code: 249(100000) Invalid token SQL
Error code = -104"
What am I doing wrong?
Thanks
William