it-swarm.com.de

Durchlaufen Sie vordefinierte Werte

Gibt es eine Möglichkeit, in Oracle "für jeden" etwas zu tun, etwa

begin
  for VAR in {1,2,5}
  loop
    dbms_output.put_line('The value: '||VAR);
  end loop;
end;

Ich weiß, du kannst so etwas tun:

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;

Aber gibt es keine Möglichkeit, dies auf eine schönere Weise zu tun? Werte definieren und durchlaufen?

Vielen Dank.

20
JGS

Sie könnten dies tun, aber wahrscheinlich nicht so glatt wie Sie möchten:

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;

Wenn Sie einen Typ in der Datenbank erstellen:

create type number_table is table of number;

dann kannst du das machen:

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;
32
Tony Andrews

Dies kommt aus dem Kommentar von A.B.Cade zur aktuell akzeptierten Antwort , aber ich finde es viel sauberer und verdient mehr Aufmerksamkeit:

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;
0
ArtOfWarfare