2008-09-22 55 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