【问题标题】:Trouble running insert queries with varray variables使用可变数组变量运行插入查询时遇到问题
【发布时间】:2010-09-12 03:06:32
【问题描述】:

我在 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。同样没有结果)

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    在您的插入语句中,您将 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));
    

    【讨论】:

    • 小子,我是不是觉得自己很蠢。我花了一天的大部分时间来解决这个问题。感谢您的帮助。
    猜你喜欢
    • 2023-03-25
    • 2020-05-14
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多