![](/img/trans.png)
[英]Assign row numbers to a set of results retrieved via a PL-SQL Stored Procedure
[英]PL-SQL stored procedure split string
我想做的是這樣的:
在java中,我有一個[[AB','BC','CD','DE']之類的數組,我想將其連接到諸如“ AB,BC,CD,DE”之類的東西並將其作為參數發送給過程。
在程序中,我的想法是,我想做類似
v_passedArgs --(AB,BC,CD,DE)
SELECT * FROM SOME_TABLE WHERE SOME_COL IN (v_passedArgs.split(','))
是否可以做類似的事情,或者您有其他想法? 謝謝
您可以在數據庫中創建一個拆分函數,並將其用於在SQL中拆分帶有定界符(在您的示例中為',')的字符串
請參考上面的鏈接創建一個拆分函數,並在您的select語句中使用它
您必須創建自己的功能。
您可以使用Oracle PL / SQL集合 ; 這是一段代碼,從帶有給定分隔符( p_sep
)的輸入字符串列表( p_list
)返回這樣的集合:
CREATE OR REPLACE TYPE t_my_list AS TABLE OF VARCHAR2(100);
CREATE OR REPLACE
FUNCTION cto_table(p_sep in Varchar2, p_list IN VARCHAR2)
RETURN t_my_list
AS
l_string VARCHAR2(32767) := p_list || p_sep;
l_sep_index PLS_INTEGER;
l_index PLS_INTEGER := 1;
l_tab t_my_list := t_my_list();
BEGIN
LOOP
l_sep_index := INSTR(l_string, p_sep, l_index);
EXIT
WHEN l_sep_index = 0;
l_tab.EXTEND;
l_tab(l_tab.COUNT) := TRIM(SUBSTR(l_string,l_index,l_sep_index - l_index));
l_index := l_sep_index + 1;
END LOOP;
RETURN l_tab;
END cto_table;
/
然后如何在SELECT
使用TABLE
關鍵字使用它TABLE
關鍵字將集合轉換為可在Oracle SQL查詢中使用的對象:
SELECT * FROM SOME_TABLE WHERE SOME_COL IN (
select * from TABLE(cto_table(',', v_passedArgs))
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.