exists
SQL ステートメントからPL/SQL 関数を呼び出すことはできません。次の必要がある場合は、コレクション内の値を参照できます。
declare
type MONTH_TYPE is table of varchar2(20) index by binary_integer;
month_table MONTH_TYPE;
mon varchar2(20);
begin
month_table(1) := 'Jan';
month_table(2) := 'Feb';
select case when month_table(1)='Jan' then 'found' else 'not found' end
into mon from dual;
end;
exists
または、 PL/SQL内で使用できます:
declare
type MONTH_TYPE is table of varchar2(20) index by binary_integer;
month_table MONTH_TYPE;
mon varchar2(20);
begin
month_table(1) := 'Jan';
month_table(2) := 'Feb';
mon := case when month_table.exists(1) then 'found' else 'not found' end;
end;
あなたのコメントから、データベースの種類が進むべき道のように思えます:
SQL> create type MONTH_TYPE is table of varchar2(20);
次に、SQL で次の中から選択できます。
declare
month_table MONTH_TYPE := MONTH_TYPE();
mon varchar2(20);
begin
month_table.extend;
month_table(1) := 'Jan';
month_table.extend;
month_table(2) := 'Feb';
update some_table
set x = 1
where month in (select column_value from table(month_table));
end;