我正在尝试在Oracle中编写一个存储过程,其中我将字符串值in_ myString
的值('xxx','yyy'
)作为Varchar并返回一个游标。我的过程如下所示:如何将作为字符串参数传递的逗号分隔值传递给Oracle存储过程?
create or relace getName(in_myString in varchar, Name_list out refcursor) IS
Begin
Open cursor for
Select Colunm1 from table where coulunmName in (in_MyString);
但是没有返回任何记录,但我试图单独运行查询它正在返回记录。请任何人都可以帮我吗?
IN子句采用值列表。你传递一个字符串,它会逐字比较'coulunmName' [sic]和'in_myString'中的值。假设Oracle支持所有这些,您将需要动态SQL和适当地分割字符串来做更多或更少的事情。我不知道Oracle的标准解决方法是什么。在其他DBMS中,一种技术是将值列表加载到临时表中,并在该表与生产表之间进行连接以选择值。在Oracle中可能有其他方法来完成它。 – 2015-04-03 03:37:31
光标看起来不错,你是否以适当的格式传递'in_myString'变量?你如何检查没有行被返回? – Lokesh 2015-04-03 03:37:53
@lokesh我不确定这种类型的参数在Oracle中应该是什么格式,但是当我传入in_myString的值(xxx)时,它会返回一条记录,但是当我将in_myString的值传递给(xxx,yyy )这是逗号分隔它不会返回任何东西 – user970500 2015-04-03 03:43:08