L'exécution d'une instruction sql stockée dans un paramètre de procédure

J'ai une question à propos des procédures stockées dans Oracle.
Ci-dessous la procédure stockée et tables comme il est:

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;

Ce que je voudrais faire est de remplacer le "en" valeurs avec la sous-requête transmise en tant que paramètre.
Donc, si je lance la procédure comme:

execute pr_TestProc('select ID from STORES where EXPIRES <= sysdate');

La requête passée dans devrait être exécutée comme une sous-requête en cours d'exécution à l'intérieur de la procédure.
Quelque chose comme:

insert into CLOSED (ID, NAME, CITY) select ID, NAME, CITY 
from STORES 
where ID in (execute(subQuery));

Évidemment, cela ne fonctionne pas, mais quelle serait la meilleure façon d'y parvenir, ou est-ce même possible?

Grâce,
Brian

InformationsquelleAutor Lord Byron | 2012-06-20