0

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。同じ結果ではありません)

4

1 に答える 1

0

挿入ステートメントには、org(i)が一重引用符で囲まれています。あなたはそれを持っているべきではありません、あなたはおそらくorg(i)という単語を値としてテーブルに挿入しています。したがって、挿入ステートメントは次のようになります。

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));
于 2008-09-22T19:52:29.377 に答える