[英]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.