0

select ステートメントで varray 型を使用しようとしています。

CREATE OR REPLACE PROCEDURE ARRAYTEST IS
  type array_t is varray(2) of int;
  array_test array_t := array_t(10,11);
BEGIN
  select * from STATISTIK where abschluss1 in array_test;
END;

しかし、それは私にエラーを与えています:

PLS-00428: an INTO clause is expected in this SELECT statement
PLS-00642: local collection types not allowed in SQL statement

最初の例外は誤解を招くようです。変数に何かを選択したくありません。

select * from STATISTIK where abschluss1 in (10,12);

ただし、(10,12) は配列 (varray) に置き換えられます。

VARRAY を選択ステートメントで使用するように変換することは可能ですか?

4

1 に答える 1

1

可能ですが、タイプはグローバルでなければなりません

create type array_t is varray(2) of int;

次に、配列をテーブルとして使用します(コンパイルのためだけに p を開きます)

 declare
    array_test array_t := array_t(10,11);
p sys_refcursor;
    begin
open p for
       select * from STATISTIK where abschluss1 in (select column_value from table(array_test ));
    end;
于 2015-07-29T14:44:16.533 に答える