-1

如何将数组绑定到PL/SQL.

例如,我有以下数组:

array_col3 = {1,2,3,4,5,6,7}

现在我想select从一个基于array.

select * from tabA where col3 in (select * from (:array_col3));
4

3 回答 3

1

希望下面的代码片段有所帮助。

SET serveroutput ON;
DECLARE
  lv sys.odcivarchar2list:=sys.odcivarchar2list('1','2','3','4');
  lv1 sys.odcivarchar2list;
BEGIN
  SELECT * BULK COLLECT
  INTO lv1
  FROM
    ( SELECT LEVEL LVL FROM DUAL CONNECT BY LEVEL < 10
    )A
  WHERE A.lvl IN
    (SELECT COLUMN_VALUE FROM TABLE(LV)
    ) ;
  dbms_output.put_line(lv1.COUNT);
END;

###############################OUTPUT##########################################

anonymous block completed
4

###############################OUTPUT##########################################
于 2017-07-12T03:21:06.777 回答
1

你需要一个table()表达式:

select * from tabA where col3 in (select * from table((:array_col3)));

或者member of操作员:

select * from tabA where col3 member of :array_col3;
于 2017-07-12T12:10:56.117 回答
0

在 plsql 中它不是那么简单。你必须使用类型,看看 dbms_utility package 。

例子:

Va dbms_utility.number_array;
 Va(1) := 1;
 Va(2) := 2;
于 2017-07-11T21:10:07.240 回答