我無法在任何地方找到此答案,但可以從另一個存儲過程調用MySQL中的存儲過程嗎?我想獲取身份值並在父存儲過程中使用它。我們不能再使用FUNCTIONS了!在MySQL中調用存儲過程中的存儲過程
回答
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()
的操作。
這裏有一個完整的,測試的例子:procedure.Based上,該解決方案必須是這樣的
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;
您正在使用LAST_INSERT_ID(),您認爲這樣做會更好嗎? –
@Mike Flynn-OUT參數並不是真的需要,你可以通過調用select last_insert_id()來獲得最後插入的id。 – dcp
如果我想返回最後一個插入的ID,或者如果它在相同的函數中可用,則檢索它? –
- 1. 從存儲過程中調用存儲過程在MySQL中
- 2. 在SQuirreL中調用MySQL存儲過程
- 3. 在php中調用mysql存儲過程
- 4. 如何在MySQL中的存儲過程中調用存儲過程
- 5. 在存儲過程中從插入調用存儲過程
- 6. 調用存儲過程中的「out」ref_cursor的Oracle存儲過程
- 7. 從存儲過程中的select語句調用存儲過程
- 8. 如何調用其他存儲過程中的存儲過程
- 9. 調用存儲過程中的存儲過程
- 10. WildFly在MySQL中不存儲存儲過程調用
- 11. 在Zend Framework中調用MYSQL存儲函數(非存儲過程)
- 12. MySQL存儲過程調試
- 13. 調用存儲在另一個存儲過程的過程
- 14. MYSQL - 存儲過程
- 15. MySQL存儲過程
- 16. MySQL存儲過程
- 17. 存儲過程mysql
- 18. MySQL存儲過程
- 19. MySQL - 存儲過程
- 20. Mysql存儲過程
- 21. MySQl存儲過程
- 22. 存儲過程MySQL
- 23. 調用在MySQL存儲過程常規
- 24. 在PHP上調用MySQL存儲過程
- 25. 調用存儲過程在MySQL
- 26. 使用存儲過程調用存儲過程的異常iBATIS
- 27. 何時在存儲過程中使用CTE在存儲過程
- 28. 調用在C#中的存儲過程
- 29. Python的Mysql類調用存儲過程
- 30. 調用MySQL的存儲過程
你用完了,你覺得這樣比LAST_INSERT_ID()更好嗎? –
如果它是一個函數,您將從函數中返回LAST_INSERT_ID作爲返回值。此解決方案必須提供相同的值,以便PROCEDURE等同於函數 –
另一個答案表示我可以在不使用OUT的情況下使用LAST_INSERT_ID()? –