在MySQL的存储过程中调用存储过程

o7jaxewo  于 2023-01-12  发布在  Mysql
关注(0)|答案(2)|浏览(238)

我在任何地方都找不到这个答案,但是你能从MySQL中的另一个存储过程调用另一个存储过程吗?我想取回标识值并在父存储过程中使用它。我们不能再使用函数了!

cbjzeqam

cbjzeqam1#

CREATE PROCEDURE innerproc(OUT param1 INT)
BEGIN
 insert into sometable;
 SELECT LAST_INSERT_ID() into param1 ;
END
-----------------------------------
CREATE PROCEDURE outerproc()
BEGIN
CALL innerproc(@a);
// @a gives you the result of innerproc
SELECT @a INTO variableinouterproc FROM dual;
END

OUT参数应该可以帮助您将值返回给调用过程。基于此,解决方案应该如下所示。

z8dt9xmd

z8dt9xmd2#

要调用其他过程,请使用CALL:例如:Call SP1(parm1, parm2);
要获取标识,您是否尝试 checkout LAST_INSERT_ID();在SP调用之后,您可能会执行类似SELECT LAST_INSERT_ID()的操作。
下面是一个经过测试的完整示例:

DELIMITER $$

CREATE TABLE animals (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
) $$

CREATE PROCEDURE sp1()
BEGIN
  insert into animals (name) values ('bear');
END $$

CREATE PROCEDURE sp2()
BEGIN
  call sp1;
  select last_insert_id();
END $$

call sp2;

相关问题