Oracle10gエンタープライズでSQL*Plus9.2を使用しています。コマンドプロンプトを介して渡すパラメーターを使用して基本的な挿入を行うスクリプトをいくつか作成しました。たくさんのインサートをループで実行できるはずだというのは理にかなっているように思えました。だから私は次のことを試しました:
--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
スクリプトを実行すると、PL/SQLが正常に完了したというメッセージが表示されます。dbms_output
の値を表示するためにデバッグして使用してみましたorg(i)
。すべてがうまく見えます。ただし、行がデータベースに入力されることはありません。選択するとすぐに、新しい行は表示されません。ループして挿入を行うことについてのトリックはありますか?
IS VARRAY(6) OF
(私も代わりに試しましたIS TABLE OF
。同じ結果ではありません)