我对Oracle非常不熟悉,我只是想让它发挥作用.我看过
here和
here,但不知道如何让它全部工作.这就是我需要的.我需要一个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是一个非常有用的快速资源.)