【发布时间】:2017-07-02 14:15:18
【问题描述】:
我知道在 INSERT 语句中使用 RETURNING,但需要一种方法使其作为 INSERT 语句(或封闭事务)的结果返回,或者能够使用 SELECT 检索该值。有没有办法做到这一点?我不能使用 DBMS_OUTPUT。谢谢!
【问题讨论】:
我知道在 INSERT 语句中使用 RETURNING,但需要一种方法使其作为 INSERT 语句(或封闭事务)的结果返回,或者能够使用 SELECT 检索该值。有没有办法做到这一点?我不能使用 DBMS_OUTPUT。谢谢!
【问题讨论】:
RETURNING 子句是保证获取由 INSERT 语句生成的 ID 值的最简单方法。在多用户环境中查询 max(id) 是不可靠的,尤其是在您使用 RAC 时。
如果 ID 是从序列中填充的,您可以通过在与 INSERT 相同的会话中运行此 来获取序列的当前值:
select your_sequence.currval from dual;
这意味着您需要知道序列的名称,这并不总是显而易见的,如果您使用 12c 标识列,则更是如此。
基本上,如果您想要 ID,请使用 RETURNING。
【讨论】: