我无法在任何地方找到此答案,但可以从另一个存储过程调用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()? –