Subject | Re: [firebird-support] Re: invalid request BLR at offset 667 bad parameter number |
---|---|
Author | setysvar |
Post date | 2015-10-20T19:01:25Z |
> from orgchart p, orgchart cDon't mix implicit and explicit JOIN in the same statement, change to
> inner join organisation pn on pn.orgid = p.parentid
something like:
for select p.parentid
from orgchart p
inner join orgchart c on p.childid = c.parentid
and p.depth+c.depth between 1 and 2
inner join organisation pn on pn.orgid = p.parentid
inner join organisation cn on cn.orgid = c.childid
where p.childid=10
into :Vorgid do
(if there's no relation between the tables, then CROSS JOIN or FULL
OUTER JOIN can sometimes (although rarely) be handy.
Also, when you don't need to know how many matches there are, you would
generally want to replace code like
> Select count(assid)with
> from Assignment
> where gdlid = :in_gdlid
> and orgid = :IN_ORGID into PorgExist;
> if (PorgExist =0) then
if (not exists(Select *
from Assignment
where gdlid = :in_gdlid
and orgid = :IN_ORGID)) then
SELECT COUNT can be time consuming and should only be used when the
number of items returned matters, not when just checking if rows exist
or not.
HTH,
Set