我有以下数组,将根据一些外部标准填充。
TYPE t_column IS TABLE OF TABLE_1.COLUMN_1%TYPE INDEX BY PLS_INTEGER;
ar_column t_column;
现在,我想将此ar_column
用于另一个游标,我该如何绑定它?
我正在寻找像select * from table1 where column in (ar_colum[0],ar_colum[1] ...);
(它的伪代码)
答案 0 :(得分:3)
在SQL语句中使用PL / SQL集合需要一些额外的步骤。必须创建数据类型,而不是简单地将其声明为PL / SQL块的一部分。 SQL中不存在关联数组,必须在某些时候将其转换为嵌套表或varray。并且必须使用TABLE运算符来转换数据。
create table table1(column_1 number);
insert into table1 values (1);
commit;
create or replace type number_nt is table of number;
declare
ar_column number_nt := number_nt();
v_count number;
begin
ar_column.extend; ar_column(ar_column.last) := 1;
ar_column.extend; ar_column(ar_column.last) := 2;
select count(*)
into v_count
from table1
where column_1 in (select * from table(ar_column));
dbms_output.put_line('Count: '||v_count);
end;
/
Count: 1