【发布时间】:2011-04-28 06:06:01
【问题描述】:
在 Oracle 中,可以通过像这样的查询来插入多行
INSERT ALL
INTO mytable (column1, column2, column3) VALUES ('val1.1', 'val1.2', 'val1.3')
INTO mytable (column1, column2, column3) VALUES ('val2.1', 'val2.2', 'val2.3')
INTO mytable (column1, column2, column3) VALUES ('val3.1', 'val3.2', 'val3.3')
SELECT * FROM dual;
并使用准备好的语句,像这样进行一次插入
BEGIN INSERT
INTO mytable (column1, column2, column3) VALUES (null, 'val1.2', 'val1.3')
RETURNING column1 INTO ?; END;
将导致返回column1 的值(假设在插入之前有一个触发器为其分配了一个值)。
如果可能的话,有没有办法将两者结合起来?意思是,插入多个值,同时仍然通过单个查询返回所有 column1 值(结果集)?
【问题讨论】:
-
从 10gR2 开始,INSERT 不支持 BULK COLLECT INTO 合成器(例如 here)。我没有使用更新版本的 Oracle 对其进行测试。