无法使用varray变量运行插入查询

时间:2008-09-22 19:23:43

标签: sql oracle plsql

我在Oracle 10g企业上使用SQL * Plus 9.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。同样的非结果)

1 个答案:

答案 0 :(得分:0)

在您的插入语句中,您将org(i)用单引号括起来。你不应该这样,你可能会将单词org(i)作为值插入表中。所以你的insert语句应该是

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));