加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

来自参数的Oracle“IN子句”

发布时间:2020-12-31 22:04:52 所属栏目:百科 来源:网络整理
导读:我对Oracle非常不熟悉,我只是想让它发挥作用.我看过 here和 here,但不知道如何让它全部工作.这就是我需要的.我需要一个proc接受一个逗号分隔的字符串作为参数,我可以在查询的“IN子句”中使用它并返回一个游标结果.是否可以在一个包罗万象的过程中做到这一

我对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是一个非常有用的快速资源.)

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!