获取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;
成功了
我有一个名为 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;
成功了