我想创建一个接受IN运算符的数组列表的过程。
例如:
Create or Replace Procedure Test (a Arraylist)
{
Select * from table1 where col1 IN (Arraylist)
}
如果使用两个参数调用该过程,则查询应为
Select * from table1 where col1 IN (val1,val2)
如果使用一个参数调用该过程,则查询应为
Select * from table1 where col1 IN (val1)
答案 0 :(得分:4)
创建集合类型:
CREATE TYPE stringlist IS TABLE OF VARCHAR2(100);
/
然后您可以将其传递给某个程序并使用MEMBER OF
运算符(而不是IN
运算符):
CREATE PROCEDURE Test (
in_list IN stringlist,
out_results OUT SYS_REFCURSOR
)
IS
BEGIN
OPEN out_results FOR
SELECT *
FROM your_table
WHERE your_column MEMBER OF in_list;
END;
/
如果您使用外部语言进行连接,则可以非常轻松地将数组传递给过程(Java example),或者您可以在PL / SQL或delimited list中创建列表。