Java Oracle SQL插入多行并返回某些内容

Java Oracle SQL插入多行并返回某些内容,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,在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

在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
的值(假设在插入之前有一个触发器为其赋值)

如果可能的话,有没有办法将两者结合起来?也就是说,在插入多个值的同时仍然使用单个查询返回所有
列1
值(一个结果集)

从(至少通过21c版本),返回条款的限制之一:

您不能指定 返回多任务的_子句 插入


从10gR2开始,synthax不支持插入(示例)。我没有用Oracle的最新版本测试过它。也许,但是应该有办法执行一个块并返回所有单个inserts的结果集。如果您需要为每个insert语句单独返回值,为什么不单独运行它们呢?我试图避免创建一个新查询(并向数据库请求)对于每一行,使用一些批处理命令。。。我猜解决方案是锁定表,在block语句中插入每一行,然后发送一个查询来获取新生成的键(最后插入的n行),最后解锁表。这听起来对吗?选择您的答案作为已接受答案来结束此问题。谢谢多个插入查询很慢,我同意Yanick的观点