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
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;
2条答案
按热度按时间cbjzeqam1#
OUT
参数应该可以帮助您将值返回给调用过程。基于此,解决方案应该如下所示。z8dt9xmd2#
要调用其他过程,请使用CALL:例如:
Call SP1(parm1, parm2);
要获取标识,您是否尝试 checkout LAST_INSERT_ID();在SP调用之后,您可能会执行类似
SELECT LAST_INSERT_ID()
的操作。下面是一个经过测试的完整示例: