我正在尝试在Oracle中编写一个存储过程,我在myString
中传递字符串值,其值('xxx','yyy'
)为varchar
并返回游标。我的程序如下所示:
create or replace getName (in_myString in varchar, Name_list out refcursor) IS
Begin
Open cursor for
Select Colunm1 from table where columnName in (in_MyString);
但是没有返回任何记录,但我试图单独运行查询它返回记录。请有人帮帮我吗?
答案 0 :(得分:2)
假设参数的输入值是这样的in_myString:=' xxx,yyy&#39 ;;我们可以使用SQL正则表达式函数根据逗号分割您的值,并将结果列表传递给IN子句。
create or relace getName( in_myString in varchar, Name_list out refcursor) IS
Begin
Open cursor for
Select Colunm1 from table where columnName in
(select regexp_substr(in_myString,'[^,]+', 1, level) from dual
connect by regexp_substr(in_myString, '[^,]+', 1, level) is not null);
可以找到关于正则表达式的更多信息here。