在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值(一个结果集)?

最佳答案

documentation(至少10g版本)中,返回子句的限制之一:

关于java - Oracle SQL插入多行并返回某些内容,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5814323/

10-16 09:16