Casting einen ref-cursor in eine Tabelle geben in pl-sql
Möchte ich warf einen refcursor in einer Tabelle geben Sie wie unten gezeigt. Die folgende syntax nicht kompilieren.Das Ziel ist es, die Ergebnisse einer refcursor in eine temporäre Tabelle und dann tun einige Arbeit, die auf die Tabelle.
create table vtest1 (a number, b number);
create table temptable1(a number, b number);
declare
pOUT SYS_REFCURSOR;
type vtest1Tab is table of vtest1%rowtype;
begin
open pOUT for 'select * from vtest1';
insert into temptable1(n1,n2)
select * from TABLE( cast(pOUT as vtest1Tab));
close pOUT;
end;
Dank.
Sind Sie sicher, dass Sie müssen verwenden Sie ein Ref-Cursor? Sind Sie sicher, dass Sie brauchen, um eine temporäre Tabelle? Beides sind Merkmale, die Häufig missbraucht Anfänger, wenn es einfachere Möglichkeiten, wie z.B. das füllen einer PL/SQL-Kollektion mit einer normalen Abfrage, oder auch dynamisch.
InformationsquelleAutor Satfactor | 2012-07-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie
bulk collect
undforall
stattinsert into ... select
:InformationsquelleAutor GWu
Wenn Sie wissen, die Namen der Tabellen zur compile-Zeit, ich verstehe nicht, den Punkt der das REF-Cursor? Warum nicht einfach haben, Ihre anonymen block als:
GWU Antwort sicherlich funktioniert, wenn Sie wirklich wollen, dass die Flexibilität der Weitergabe des source-table-name als string.
InformationsquelleAutor StewS2