在Oracle中插入后返回标识列的值

Posted

技术标签:

【中文标题】在Oracle中插入后返回标识列的值【英文标题】:Returning the value of identity column after insertion in Oracle 【发布时间】:2015-02-12 07:54:48 【问题描述】:

插入后如何在 Oracle 12c 中返回标识列 (id) 的值?似乎大多数方法都使用序列来取回插入项目的 id。

【问题讨论】:

【参考方案1】:

只需使用 RETURNING 子句。

例如-

RETURNING identity_id INTO variable_id;

测试用例 -

SQL> set serveroutput on
SQL> CREATE TABLE t
  2    (ID NUMBER GENERATED ALWAYS AS IDENTITY, text VARCHAR2(50)
  3    );

Table created.

SQL>
SQL> DECLARE
  2    var_id NUMBER;
  3  BEGIN
  4    INSERT INTO t
  5      (text
  6      ) VALUES
  7      ('test'
  8      ) RETURNING ID INTO var_id;
  9    DBMS_OUTPUT.PUT_LINE('ID returned is = '||var_id);
 10  END;
 11  /
ID returned is = 1

PL/SQL procedure successfully completed.

SQL>

SQL> select * from t;

        ID TEXT
---------- --------------------------------------------
         1 test

SQL>

【讨论】:

以上是关于在Oracle中插入后返回标识列的值的主要内容,如果未能解决你的问题,请参考以下文章

oracle 11g - 在oracle 11g数据库中获取标识列的最后一个插入ID的方法是什么?

插入标识列的 BCP 格式是啥

sqlserver向数据库插入数据的时候,自增张(标识列)列不允许为空,怎样插入该列数据?

SQL Server中的标识列

SqlServer怎么获得生成的newid()的值

SqlServer标识列