Oracle如何在where子句中使用数组?

Oracle如何在where子句中使用数组?,oracle,plsql,Oracle,Plsql,我希望将值存储在数组中,然后在where子句中使用它 像这样: SELECT ... ... FROM myTable WHERE (myTable.id, myTable.type) IN (SELECT * FROM table(array_collection) ) 数组\u集合值如下所示: (('1','N'), ('2','N'), ('3','Y')) 有没有办法不创建模式级别的tabletype来实现这一点

我希望将值存储在数组中,然后在where子句中使用它

像这样:

SELECT ... ... 
  FROM myTable 
 WHERE (myTable.id, myTable.type) 
    IN (SELECT * 
          FROM table(array_collection)
       )
数组\u集合值如下所示:

  (('1','N'),
   ('2','N'),
   ('3','Y'))
有没有办法不创建模式级别的
table
type来实现这一点

我希望将值存储在数组中

这是存储价值的方式:

CREATE OR REPLACE TYPE array_item IS object( id NUMBER, TYPE varchar2(3));

CREATE OR REPLACE TYPE array_collection IS VARRAY(10) OF array_item;


declare
--Initialization 
var_array array_collection:=array_collection();
begin
  ---Storing 3 elements
 var_array.extend(3);
 var_array(1):= array_item(1,'N');
 var_array(2):= array_item(2,'N');
 var_array(3):= array_item(3,'Y');

 for i in 1..var_array.count
 loop
  dbms_output.put_line( var_array(i).id ||'    '|| var_array(i).TYPE );
 end loop;

end;
您可以将其用作:

SELECT ... ... 
  FROM myTable 
 WHERE (myTable.id, myTable.type) MEMBER OF var_array ;

嘿,你能说得更具体点吗?“table”是什么样子的?如果您不想创建模式级类型,我想您应该创建一个函数来检查您的值,并在WHERE过滤器谓词中使用它。但它不会有好的表现