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

Yan*_*hon 5 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 ('val3.1', 'val3.2', 'val3.3')
SELECT * FROM dual;
Run Code Online (Sandbox Code Playgroud)

并使用准备好的语句,执行像这样的单个插入

BEGIN INSERT 
   INTO mytable (column1, column2, column3) VALUES (null, 'val1.2', 'val1.3')
RETURNING column1 INTO ?; END;
Run Code Online (Sandbox Code Playgroud)

将导致返回column1的值(假设在插入之前有一个触发器为其分配一个值)。

如果可能的话,有没有办法将两者结合起来?意思是,插入多个值,同时仍然column1通过单个查询返回所有值(结果集)?

Cra*_*aig 4

文档(至少到21c版本)来看,返回子句的限制之一:

您不能为多表插入指定returning_clause。