来自参数的Oracle“IN子句”

前端之家收集整理的这篇文章主要介绍了来自参数的Oracle“IN子句”前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对Oracle非常不熟悉,我只是想让它发挥作用.我看过 herehere,但不知道如何让它全部工作.这就是我需要的.我需要一个proc接受一个逗号分隔的字符串作为参数,我可以在查询的“IN子句”中使用它并返回一个游标结果.是否可以在一个包罗万象的过程中做到这一点?如果没有,我需要采取哪些不同的步骤?我再次为我缺乏Oracle知识而道歉,这只是试图让事情快速实现.

谢谢

这是proc(p_Scope将是逗号分隔的输入):

create or replace PROCEDURE CU_SELECTION_ID
(
p_Scope IN varchar2,p_ResultSet OUT SYS_REFCURSOR
)
is
BEGIN
OPEN p_ResultSet FOR
select
b.addr1,b.addr2,b.city,b.country_code,a.customer_no,b.des1,a.entity,b.main_phone_no,b.phone_area_code,b.status,b.wb_site_url,b.zip
from
ar_customer a,ct_addr b
where b.main_loc_flag = 'Y' and
a.customer_no = b.customer_no and
a.entity = b.cust_entity and
b.stk_loc_no = '3' and 
b.customer_no in (p_Scope);
END;

解决方法

我相信有一种“更好的方式”,但我不确定它现在是什么……

这应该对你有用:

更换:

b.customer_no in (p_Scope);

instr(p_Scope,','||b.customer_no||',' ) > 0

这将搜索p_Scope并返回值>如果b.customer_no出现在列表中,则为0.

确保列表中的第一个和最后一个字符是逗号(‘,’)

(另外,作为Oracle的新成员,我发现Tech Republic是一个非常有用的快速资源.)

猜你在找的Oracle相关文章