I would consider using Between :Field1 and :Field2 rather than >= :Field1 and <= Field2.
Something else that I avoid is "or" sql statement only because it gets ugly.
i.e. instead of this
Where company = 1
and (:HostVar = 0 or region = :HostVar)
I would do.
Where company = 1
and :HostVar in (0,region)
So if I wanted all regions, :HostVar would equal 0.
Just some food for thought.
Pick me apart if you like.
-----Original Message-----
From: "hockchai Lim" <lim.hock-chai@xxxxxxxxxxxxxxx>
To: rpg400-l@xxxxxxxxxxxx
Date: 01/24/2011 02:47 PM
Subject: Re: Sql parameter help
Sent by: rpg400-l-bounces@xxxxxxxxxxxx
Efficiency is a hard topic to tackle. But generally speaking, static sql
will run a bit faster than the dynamic sql. Because statuc sql does not
require a lot of warm up time.
As for complex criteria, you could try specify both the >= and <=
conditions
for each optional filter field that you have.
Using your example (Assuming that coid is the department field), you can
change your statement to be like:
Exec-sql
declare C1 cursor for
select * from oncontac00
join ondept00
on coid = onid
where
colast >= :colast_var and
coid >= :coid_low and coid <= :coid_hi
order by Colast;
In your RPG program, if user did not specified a department filter value,
then initialize coid_low to *loval and coid_hi to *hival. If user
specified
a department value that he wants, then initialize both coid_low and
coid_hi
to the value that he has specified. Hopefully this make sense...
"Smith, Mike" <Mike_Smith@xxxxxxxxxxxxxxxx> wrote in message
news:mailman.25241.1295894288.2702.rpg400-l@xxxxxxxxxxxx...
I'm working on a sql subfile program and I'm trying to make use of
parameter markers.
I can get it working when only doing a Position to marker, but now I
have introduced more complex criteria and I can't figure out how to make
this work effectively.
Subfile has a Position TO field. This should be a parameter marker.
Also I'm allowing user to select a specific department. This should be
a parameter marker
selct = 'select * from oncontac00 join ondept00 +
on coid = onid +
where colast >= ? +
and coid = ? +
order by COlast' ;
Do I need to set up multiple select statements for all possible
conditions?
Do I need to set up multiple open statements to coincide with the
different conditions also.
Any examples would be appreciated.
Thanks
Mike
NOTICE: This message, including any attachment, is intended as a
confidential and privileged communication. If you have received this
message
in error, or are not the named recipient(s), please immediately notify the
sender and delete this message.
As an Amazon Associate we earn from qualifying purchases.