Oracle のストアド プロシージャについて質問があります。以下は、そのままのストアド プロシージャとテーブルです。
create table STORES
(
ID number,
NAME varchar2(100),
CITY varchar2(100),
EXPIRES DATE
)
insert into stores values(1, 'Store 1', 'City 1', sysdate);
insert into stores values(2, 'Store 2', 'City 1', sysdate);
insert into stores values(3, 'Store 3', 'City 2', sysdate);
create table CLOSED
(
ID number,
NAME varchar2(100),
CITY varchar2(100)
)
create or replace PROCEDURE
pr_TestProc(subQuery IN VARCHAR2)
IS
begin
insert into CLOSED (ID, NAME, CITY)
select ID, NAME, CITY
from STORES
where ID in (1, 2, 3);
end;
私がやりたいのは、「in」の値を、パラメーターとして渡されたサブクエリに置き換えることです。したがって、次のような手順を実行すると:
execute pr_TestProc('select ID from STORES where EXPIRES <= sysdate');
渡されたクエリは、プロシージャ内で実行されるサブクエリとして実行する必要があります。何かのようなもの:
insert into CLOSED (ID, NAME, CITY) select ID, NAME, CITY
from STORES
where ID in (execute(subQuery));
明らかにこれは機能しませんが、これを達成するための最良の方法は何ですか、それとも可能ですか?
ありがとう、ブライアン