2008-09-22 88 views
0

我在Oracle 10g企業版上使用SQL * Plus 9.2。我創建了一些腳本,它們使用通過命令提示符傳遞的參數進行基本插入。看起來合乎邏輯的是,我應該能夠在一個循環中運行一堆插入。所以我嘗試了以下內容:使用varray變量運行插入查詢時遇到問題

--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)的值。一切都很美好。但行從未進入數據庫。只要我做一個選擇,新的行不在那裏。有沒有關於循環和插入的一些技巧?

回答

0

(我也很到位的IS TABLE OF。同一非結果試圖IS VARRAY(6) OF)在你插入語句,你在單引號具有組織(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)); 
+0

男孩,我覺得自己很愚蠢。我花了一天的更好的時間來解決這個問題。謝謝您的幫助。 – Arcster 2008-09-22 20:00:52