如何将作为字符串参数传递的逗号分隔值传递给 Oracle 存储过程?
How to pass comma-separated values passed as string parameter to an Oracle stored procedure?
我正在尝试在 Oracle 中编写一个存储过程,其中我在 myString
中传递字符串值,其值类似于 ('xxx','yyy'
) as 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);
但没有返回任何记录,但我试图 运行 单独查询它正在返回记录。请问有人能帮帮我吗?
假设您的参数输入值是这样的 in_myString := 'xxx,yyy';我们可以使用 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。
我正在尝试在 Oracle 中编写一个存储过程,其中我在 myString
中传递字符串值,其值类似于 ('xxx','yyy'
) as 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);
但没有返回任何记录,但我试图 运行 单独查询它正在返回记录。请问有人能帮帮我吗?
假设您的参数输入值是这样的 in_myString := 'xxx,yyy';我们可以使用 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。