Y at-il un moyen de faire un "pour chaque" dans Oracle, quelque chose comme ceci:
begin
for VAR in {1,2,5}
loop
dbms_output.put_line('The value: '||VAR);
end loop;
end;
Je sais que tu peux faire quelque chose comme:
begin
for VAR in 1..5
loop
if VAR in(1,3,5) then
dbms_output.put_line('The value: '||VAR);
end if;
end loop;
end;
Mais n'y a-t-il pas moyen de le faire plus gentiment? Définir un ensemble de valeurs et les parcourir?
Merci.
Vous pouvez le faire, mais probablement pas aussi lisse que vous le souhaitez:
declare
type nt_type is table of number;
nt nt_type := nt_type (1, 3, 5);
begin
for i in 1..nt.count loop
dbms_output.put_line(nt(i));
end loop;
end;
Si vous créez un type dans la base de données:
create type number_table is table of number;
alors vous pouvez faire ceci:
begin
for r in (select column_value as var from table (number_table (1, 3, 5))) loop
dbms_output.put_line(r.var);
end loop;
end;
Cela vient du commentaire de A.B.Cade sur la réponse actuellement acceptée , mais je la trouve beaucoup plus propre et mérite plus d'attention:
BEGIN
FOR i IN (SELECT column_value FROM table(sys.dbms_debug_vc2coll(1, 3, 5))) LOOP
dbms_output.put_line(i.column_value);
END LOOP;
END;