首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MySQL中调用存储过程中的存储过程

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

Stack Overflow用户
提问于 2012-06-13 00:27:20
回答 2查看 95.2K关注 0票数 46

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-13 00:34:56

代码语言:javascript
复制
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参数应该可以帮助您将值返回给调用procedure.Based,解决方案必须是这样的。

票数 80
EN

Stack Overflow用户

发布于 2012-06-13 00:31:40

要调用另一个过程,请使用CALL:ex:Call SP1(parm1, parm2);

要获得身份,您是否尝试查看LAST_INSERT_ID();您会在SP调用后执行类似于SELECT LAST_INSERT_ID()的操作。

下面是一个完整的、经过测试的示例:

代码语言:javascript
复制
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;
票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11000802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档