【问题标题】:Mysql: #1064 error in stored procedure while altering [closed]Mysql:#1064 更改时存储过程出错 [关闭]
【发布时间】:2012-10-05 17:31:59
【问题描述】:

我尝试在成功创建后更改存储过程。

DELIMITER $$
ALTER PROCEDURE `purchaseItem`(
      IN productID INT, 
      IN quantity INT,  
      IN memID INT,
      OUT stat INT)
BEGIN
            DECLARE qnty INT;
            DECLARE price decimal(10,2);
            DECLARE description VARCHAR(500);

            SET qnty = (SELECT p_Unit FROM product WHERE p_ID = productID);
            IF qnty >= quantity && qnty != 0 THEN
                SELECT p_Price INTO price FROM product WHERE p_ID = productID;
                                SELECT p_Desc INTO description FROM product WHERE p_ID = productID;
                INSERT INTO purchase VALUES 
                      (NULL, productID, quantity, price, description , memID, 0, NULL);
                UPDATE product 
                SET p_Unit = (qnty - quantity) 
                WHERE p_ID = productID;
                SET stat = 0;
            ELSE
                SET stat = 1;
            END IF;


    END$$

DELIMITER ;

但是,我在尝试更改 SP 时遇到了以下错误。

#1064 - 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 '( IN productID INT, IN quantity INT, IN memID INT, ' at line 1

谁能指出我哪里做错了。谢谢!

【问题讨论】:

    标签: mysql database stored-procedures mysql-error-1064


    【解决方案1】:

    根据§13.1.4 "ALTER PROCEDURE Syntax" in the MySQL 5.6 Reference Manual

    [...] 您不能使用 [ALTER PROCEDURE] 语句更改存储过程的参数或主体;要进行此类更改,您必须使用 DROP PROCEDURECREATE PROCEDURE 删除并重新创建过程。

    【讨论】:

      【解决方案2】:

      由于您无法使用 ALTER PROCEDURE 更改程序主体,因此您必须删除并重新创建相同的程序或使用一些 GUI 工具来编辑/更新 Mysql 存储过程。

      ex. alter procedure employeetest sql security invoker;
      

      注意*您可以更改安全类型,例如..INVOKER 或 DEFINER

      GUI工具免费软件:TOAD for Mysql.

      【讨论】:

        猜你喜欢
        • 2012-08-02
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 2020-12-02
        • 1970-01-01
        • 2015-09-22
        • 2018-06-21
        • 1970-01-01
        相关资源
        最近更新 更多