【问题标题】:Syntax error when calling stored procedure inside stored procedure在存储过程中调用存储过程时出现语法错误
【发布时间】:2018-03-13 12:18:41
【问题描述】:

我正在尝试在另一个存储过程中调用一个存储过程。

我在主过程调用子过程的语句中遇到语法错误。

这是我的查询

DROP  PROCEDURE GetAllProducts;

DELIMITER //

CREATE PROCEDURE GetAllProducts()
BEGIN

DECLARE finished INT DEFAULT 0; 
DECLARE myName varchar(60);
DEClARE myCursor CURSOR FOR
SELECT Name FROM Test;

DECLARE CONTINUE HANDLER 
FOR NOT FOUND SET finished =1 ;



OPEN myCursor;

get_email: LOOP
FETCH myCursor INTO myName;
IF finished = 1 THEN
 LEAVE get_email;
END IF;

-- Line which shows a syntax error
EXEC UpdateProdcut myName;

END LOOP get_email;




CLOSE myCursor;
DEALLOCATE myCursor;


END //
DELIMITER ;

这是错误信息

ERROR 1064 (42000): You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax 
to use near 'UpdateProdcut myName OUTPUT;

mysql版本是5.5.54

对此有什么想法吗?

谢谢。

【问题讨论】:

标签: mysql stored-procedures syntax-error


【解决方案1】:

改用CALL

call UpdateProdcut(myName);

execute 用于准备好的语句。

参考: https://dev.mysql.com/doc/refman/5.5/en/call.html

【讨论】:

    猜你喜欢
    • 2016-11-10
    • 1970-01-01
    • 2011-10-10
    • 2018-04-06
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-12
    相关资源
    最近更新 更多