Comment avez-vous préciser DANS la clause dans une dynamique de requêtes à l'aide d'une variable?

En PL/SQL, vous pouvez spécifier les valeurs de l'opérateur à l'aide de la concaténation:

v_sql := 'select field1
from table1
where field2 in (' || v_list || ')';

Est-il possible de faire la même chose à l'aide d'une variable?

v_sql := 'select field1
from table1
where field2 in (:v_list)'; 

Si oui, comment?

EDIT: Avec référence à Marcin réponse, comment puis-je sélectionner à partir de la table résultante?

declare

cursor c_get_csv_as_tables is
select in_list(food_list) food_list
from emp_food
where emp_type = 'PERM';

cursor c_get_food_list (v_food_table varchar2Table)is
select *
from v_food_table;

begin
    for i in c_get_csv_as_tables loop
        for j in c_get_food_list(i.food_list) loop
            dbms_output.put_line(j.element);
        end loop;
    end loop;
end;

J'obtiens l'erreur suivante:

ORA-06550: line 10, column 6:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 9, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 15, column 34:
PLS-00364: loop index variable 'J' use is invalid
ORA-06550: line 15, column 13:
PL/SQL: Statement ignored
double possible de PL/SQL utiliser VARRAY dans la CLAUSE
Je ne comprends pas... comment est-ce la même chose? J'ai besoin de passer un lier des variables. Est-il une façon similaire pour ce faire?
Je ne savais pas que tu voulais lier. cela dit, autant que je sache, vous ne pouvez pas utiliser de lier des variables comme ça.
mais vous pouvez toujours lier un varray comme dans le lien @Sathya vous a donné
double possible de Comment puis-je vérifier pour une mise EN condition à l'encontre d'une liste dynamique dans Oracle?

OriginalL'auteur Zesty | 2012-01-23