【发布时间】:2011-10-01 13:08:36
【问题描述】:
我对 Oracle 非常不熟悉,我只是想让它发挥作用。我看过here 和here,但不知道如何让它全部工作。这就是我需要的。我需要一个接受逗号分隔的字符串作为参数的过程,我可以在查询的“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;
【问题讨论】:
-
请展示您已经尝试过的内容。
-
这些是需要更改的预先存在的 oracle procs。如果它可以在没有重大结构变化的情况下完成,那么在这一点上将是可取的。要回答您的问题,不,我没有研究过动态 sql...我也不知道从哪里开始 :)。
-
@CosCallis 我已经尝试了问题中两个链接的变体……主要是想弄清楚
table(cast(array as type_array))中的那种东西是否可行。我会将过程添加到我的问题中,但此时它又回到了基本过程。 -
@George 动态地,我仍然需要遍历逗号分隔的参数来构建字符串。这可能是可行的,但我在这里太不适合了,以至于它甚至都不好笑。我几乎没有接触过甲骨文。
标签: oracle parameters in-clause