sqlplus - à l'aide d'un lier des variables dans le “dans” la clause

Je suis en train d'une liaison variable dans une PL/SQL bloc, et j'essaie de l'utiliser dans une autre requête DANS l'expression. Quelque chose comme ceci:

variable x varchar2(255)

declare
    x varchar2(100);
begin
    for r in (select id from other_table where abc in ('&val1','&val2','&val3') ) loop
    x := x||''''||r.id||''',';
    end loop;
    --get rid of the trailing ','
    x:= substr(x,1,length(x)-1);

    select x into :bind_var from dual;
end;
/

print :bind_var;

select *
from some_table
where id in (:bind_var);

Et j'obtiens une erreur (ORA-01722: nombre non valable) sur la requête qui tente d'utiliser la liaison de la variable dans la liste.

L'instruction print yiels '123','345' qui est ce que j'attends.

Est-il possible d'utiliser la liaison de la variable comme ceci ou devrais-je essayer une approche différente?

(à l'aide d'Oracle 10g)


Précisions:

C'est pour une réconciliation genre de chose. Je veux courir

select *
from some_table
where id in (select id from other_table where abc in ('&val1','&val2','&val3'))

avant la partie principale du script (non représentée ici) supprime tout un tas de dossiers. Je veux l'exécuter à nouveau par la suite pour vérifier que les enregistrements dans some_table n'ont PAS été supprimés. Toutefois, les données other_table NE supprimés par ce processus, de sorte que je ne peux pas juste faire référence aux données other_table parce qu'il n'y a rien. J'ai besoin d'un moyen de préserver la other_table.id valeurs afin que je puisse vérifier les enregistrements parents par la suite.

OriginalL'auteur FrustratedWithFormsDesigner | 2011-02-11