Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

where JOB_ID IN (:JOB_ID)

7 views
Skip to first unread message

probashi

unread,
Sep 5, 2006, 2:04:34 PM9/5/06
to
Hi,

When I run q1 I get back 10 rows but when I run q2 (whit supplying
"'IT_PROG', 'FI_ACCOUNT'" in the parameter) I got zero records
back.

Can any body explain this!!!.


--q1:
select * from HR.EMPLOYEES where JOB_ID IN ('IT_PROG', 'FI_ACCOUNT')

--q2
select * from HR.EMPLOYEES where JOB_ID IN (:JOB_ID)

Thanks

DA Morgan

unread,
Sep 5, 2006, 2:28:19 PM9/5/06
to

Your second syntax is invalid. What Oracle will look for is a single
value in the column that looks like the full string including the
comma and the space.

If you want to use this type of construct you must cast the variable
as a table. See the example in Morgan's Library (www.psoug.org) under
CONDITIONS titled "COMPLEX IN DEMO."

Be forwarned that one part of the demo, duplicates what you did and
is intended to fail. The next example shows how to do it correctly.
--
Daniel Morgan
Puget Sound Oracle Users Group

Brian Peasland

unread,
Sep 5, 2006, 2:31:14 PM9/5/06
to

In Q2, ":JOB_ID" is a bind variable. This bind variable can only be used
to return one value in the IN clause. If you need two values in the IN
clause (as shown in Q1), then you need to have 2 bind variables, holding
the two different values you are searching for.

HTH,
Brian


--
===================================================================

Brian Peasland
d...@nospam.peasland.net
http://www.peasland.net

Remove the "nospam." from the email address to email me.


"I can give it to you cheap, quick, and good.
Now pick two out of the three" - Unknown

probashi

unread,
Sep 5, 2006, 4:50:33 PM9/5/06
to
Thanks for shedding some light on this issue.

So :JOB_ID was treated as one value not a comma separated values. (I
wish there was a support for touple)

I am getting this parameter from an application and the application may
select any number of values. Looks like JOB_ID IN (:JOB_ID) is not
going to work.

Since :JOB_ID is a single value, this might work too:

select * from HR.EMPLOYEES where instr(:JOB_ID,JOB_ID)>0

Thanks

DA Morgan

unread,
Sep 5, 2006, 8:21:03 PM9/5/06
to
probashi wrote:
> Thanks for shedding some light on this issue.
>
> So :JOB_ID was treated as one value not a comma separated values. (I
> wish there was a support for touple)

I posted information on how to do it. Did you miss my post?
--
Daniel Morgan
University of Washington

0 new messages