Frage

Ich bin mit SQL * Plus 9.2 auf Oracle 10g Enterprise. Ich habe einige Skripte erstellt, die grundlegenden Einsätze mit Hilfe von Parametern zu tun, die ich über die Eingabeaufforderung übergeben. Es schien logisch, dass ich in der Lage sollte eine Reihe von Einsätzen in einer Schleife zu laufen. Also habe ich versucht die folgenden:

--begin

DECLARE

TYPE va_orgs IS TABLE OF nbr.lien_item.lien_item_name%type;

org va_orgs :=  va_orgs('RTA','RTB','RTE','RTI','RTM','RTT');

BEGIN

FOR i in org.FIRST .. org.LAST

LOOP

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', 'org(i)');

COMMIT;

END LOOP;

END;

/

--end

Als ich das Skript ausführen, erhalte ich eine Meldung, dass die PL / SQL erfolgreich abgeschlossen. Ich habe versucht, das Debuggen und mit dbms_output die Werte von org(i) Diplay. Alles sieht gut aus. Aber die Zeilen nie in die Datenbank eingetragen bekommen. Sobald ich eine Auswahl tun, sind die neuen Zeilen nicht da. Gibt es einen Trick, um Looping und tun Einsätze?

(Ich habe auch versucht IS VARRAY(6) OF anstelle von IS TABLE OF. Gleiche Nicht-Ergebnis)

War es hilfreich?

Lösung

In Ihrer Insert-Anweisung Sie haben org (i) in einfachen Anführungszeichen. Sie sollten das nicht, Sie einfügen wahrscheinlich die Worte org (i) als Werte in die Tabelle. So sollte Ihre Insert-Anweisung sein

INSERT INTO nbr.lien_item (lien_item_sid, excel_row, include_in_calcs, indent, header_level, sort_order, unit, lien_item_status, lien_item_name) VALUES (nbr.lien_item_seq.nextval, 0, 'Y', 1, 0, 1, 'FTE', 'A', org(i));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top