Die ist ein guter Ort zu starten.
Wenn Sie einen einzelnen Wert einfügen müssen, können Sie eine skalare Variable verwenden:
declare
v number;
begin
select val into v
from someTable
where val != 999;
--
insert into someOtherTable(someField) values (v);
end;
Das wird nicht funktionieren, wenn Sie mehr als eine Zeile einfügen müssen; in diesem Fall müssen Sie eine Sammlung verwenden:
declare
type tableOfNumber is table of number index by pls_integer;
v tableOfNumber;
begin
select val
bulk collect into v
from someTable
where val != 999;
--
forall i in v.first .. v.last
insert into someOtherTable(someField) values (v(i));
end;
/
Der beste Weg, jedoch ist klar, SQL zu verwenden, die besser lesbar und schneller als PL/SQL-Möglichkeiten ist:
insert into someOtherTable (someField)
select val
from someTable
where val != 999;