可能的重复:
获取 oracle 数据库中最后插入的记录的 ID
我对oracle还是个新手,以前用过SQL Server。我有一个存储过程,我正在尝试一个接一个地执行两次插入。第二个 INSERT 需要第一个 INSERT 的 ID。有人可以解释一下如何做吗?
我看到了有关SEQUENCEs 和nextvalue/curval?的内容
我想在 SQL Server 中我只是声明一个变量并使用SCOPE_IDENTITY,所以我希望这样做。
有两种可能性。如果您使用序列进行数字生成,则可以从序列中获取值,如下所示:
select SequenceName.currval into AVariable from dual
Run Code Online (Sandbox Code Playgroud)
或这个
AVariable := SequenceName.currval;
Run Code Online (Sandbox Code Playgroud)
但最好使用returning这样的子句:
declare
AVariable int;
begin
insert into yourtable(columns)
values (values)
returning id into AVariable;
insert into anotherTable(columns)
values(AVariable, othervalues);
end;
Run Code Online (Sandbox Code Playgroud)
这样,无论实现细节如何,它都会起作用。你不必知道序列的名称,它也适用于后面介绍的标识列。
它唯一不起作用的是具有替代触发器的视图,但这完全是一种特殊情况。