【问题标题】:How to bind arrays in a variable in PL/SQL [closed]如何在 PL/SQL 中的变量中绑定数组 [关闭]
【发布时间】:2017-12-16 02:13:24
【问题描述】:

如何在PL/SQL的变量中绑定数组。

例如我有以下数组:

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

现在我想从基于array 的表中select

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

【问题讨论】:

标签: plsql bind-variables


【解决方案1】:

希望下面的 sn-p 有所帮助。

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##########################################

【讨论】:

    【解决方案2】:

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

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

    或者member of 运算符:

    select * from tabA where col3 member of :array_col3;
    

    【讨论】:

      【解决方案3】:

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

      例子:

      Va dbms_utility.number_array;
       Va(1) := 1;
       Va(2) := 2;
      

      【讨论】:

      • 这不是@Abhi85 所要求的。
      • 嗯,他问:如何在 PL/SQL 中将数组绑定到变量中。但你的答案看起来更完整。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-29
      • 2012-05-07
      • 1970-01-01
      • 2011-04-06
      • 1970-01-01
      • 2013-08-30
      • 2014-07-12
      相关资源
      最近更新 更多