簡體   English   中英

在MySQL中的存儲過程中調用存儲過程

[英]Calling a Stored Procedure in a Stored Procedure in MySQL

我在任何地方都找不到此答案,但是可以從MySQL中的另一個存儲過程調用存儲過程嗎? 我想找回標識值,並在父存儲過程中使用它。 我們不能再使用FUNCTIONS!

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參數應幫助您將值返回給調用過程。基於此,解決方案必須是這樣的。

要調用另一個過程,請使用CALL :例如: Call SP1(parm1, parm2);

為了獲得身份,您是否嘗試簽出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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM