获取Oracle存储过程中table中插入记录的主键值

Get primary key value of record inserted in the table inside the stored procedure in Oracle

我有一个名为 users 的 table,其中我的 userId 是主键和增量我想做的是编写一个可以接受用户数据的存储过程,并且由于 userId 是增量的,它将 return 插入该记录后创建的 userId。

这是我的存储过程代码:

CREATE OR REPLACE PROCEDURE sp_register_new_user 
    (firstname     IN VARCHAR2,
     lastname      IN VARCHAR2,
     phone_name    IN VARCHAR2,
     user_password IN VARCHAR2,
     email_id      IN VARCHAR2,
     userrole      IN NUMBER,
     udid          IN VARCHAR2,
     res           OUT NUMBER) 
AS
BEGIN
    INSERT INTO users (
        first_name,
        last_name,
        login,
        isactive,
        role_id,
        password,
        uuid,
        phonenumber
    ) VALUES (
        firstname,
        lastname,
        email_id,
        1,
        userrole,
        user_password,
        udid,
        phone_name
    );

  SELECT LAST_INSERT_ID();
END sp_register_new_user;

我参考了一些他们说我需要写这行来获取最后一条记录的值

SELECT LAST_INSERT_ID();

但是我得到一个错误。

此外,我想在交易的帮助下做到这一点,但我不知道如何实现它,因为我是 MySQL 的新手,有人可以帮我解决这个问题吗

如果你想要 Oracle 中的解决方案,你可以在那里使用 RETURNING 关键字到 return 最后插入的 ID -

 CREATE OR REPLACE PROCEDURE sp_register_new_user (firstname     IN VARCHAR,
                                                   lastname      IN VARCHAR,
                                                   phone_name    IN VARCHAR,
                                                   user_password IN VARCHAR,
                                                   email_id      IN VARCHAR,
                                                   userrole      IN NUMBER,
                                                   udid          IN VARCHAR,
                                                   res           IN NUMBER
                                       ) AS

BEGIN
    INSERT INTO users (
        first_name,
        last_name,
        login,
        isactive,
        role_id,
        password,
        uuid,
        phonenumber
    ) VALUES (
        firstname,
        lastname,
        email_id,
        1,
        userrole,
        user_password,
        udid,
        phone_name
    ) RETURNING id INTO res;

END sp_register_new_user;

我做到了

    INSERT INTO users (
    first_name,
    last_name,
    login,
    isactive,
    role_id,
    password,
    uuid,
    phonenumber
) VALUES (
    firstname,
    lastname,
    email_id,
    1,
    userrole,
    user_password,
    udid,
    phone_name
) RETURNING id INTO res;

成功了