Subject | Re: Execute Statement Problem |
---|---|
Author | Adam |
Post date | 2005-12-20T23:03:38Z |
--- In firebird-support@yahoogroups.com, "william_yuwei"
<william_yuwei@y...> wrote:
for Firebird stored procedures. That means it may behave differently
in some cases, and in some cases, may behave "better" than Firebird does.
statement. Also make sure your variable is long enough to handle the
entire query.
Adam
<william_yuwei@y...> wrote:
>IBExpert is a simulator not a true debugger. There is no true debugger
> 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.
>
for Firebird stored procedures. That means it may behave differently
in some cases, and in some cases, may behave "better" than Firebird does.
> 2)When I using my application against "select * fromI had a problem before attempting to combine parameters with execute
> 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?
>
statement. Also make sure your variable is long enough to handle the
entire query.
Adam