我正在嘗試在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