Sql 在oracle中插入并返回值

Sql 在oracle中插入并返回值,sql,oracle,plsql,Sql,Oracle,Plsql,我需要在一个查询中插入并返回主键,可以吗? 原因是主键是自动递增的,所以我不知道它是什么 insert into Person(name) values ('Radouane') 选择PersonId:我插入的当前id 谢谢,返回到子句就是您需要的: SQL> SET SERVEROUTPUT ON SQL> DECLARE l_id person.PersonId%type; BEGIN INSERT INTO person ( name ) VALUES ( 'Rado

我需要在一个查询中插入并返回主键,可以吗? 原因是主键是自动递增的,所以我不知道它是什么

insert into Person(name) values ('Radouane')
选择PersonId:我插入的当前id


谢谢,

返回到子句就是您需要的:

SQL> SET SERVEROUTPUT ON
SQL> DECLARE
  l_id person.PersonId%type;
BEGIN
  INSERT INTO person ( name ) VALUES ( 'Radouane' ) 
    RETURNING id INTO l_id;
  DBMS_OUTPUT.PUT_LINE( 'Returning ID value is : '||l_id );
END;
/
将“id”替换为主键列,“l_id”替换为要将值放入的变量


互联网上有很多例子。请注意,它仅限于PL/SQL,不能在SQL中使用。

您可以尝试以下示例:

DECLARE
   strlen   NUMBER;
BEGIN
   INSERT INTO myemp(ename) values('emp-name')
   RETURNING LENGTH(ename) INTO strlen;
   DBMS_OUTPUT.PUT_LINE(strlen);
END;
/

我得到了00905。00000-“缺少关键字”您应该补充一点,这仅在PL/SQL中可能,在SQLyeah中不可能。我正在使用oracle,但我仍然得到相同的错误“缺少关键字”@user2848242 PL/SQL是oracle中的过程语言(函数、触发器、过程、匿名块),SQL是查询语言。您不能在Oracle中的单个sql语句中插入和查询,但可以在pl/sql中的同一事务中插入和使用该值进行另一个操作-这就是返回到的目的。主键如何获取id?使用
序列
或通过
标识