我尝试在成功创建后更改存储过程。
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
有人可以指出我在哪里做错了。谢谢!
答案 0 :(得分:1)
根据§13.1.4 "ALTER PROCEDURE
Syntax" in the MySQL 5.6 Reference Manual
[...]您无法使用[
ALTER PROCEDURE
]语句更改存储过程的参数或正文;要进行此类更改,您必须使用DROP PROCEDURE
和CREATE PROCEDURE
删除并重新创建该过程。
答案 1 :(得分:0)
由于您无法使用ALTER PROCEDURE更改过程主体,因此必须对其进行DROP并重新创建或使用一些GUI工具进行EDIT / UPDATE Mysql存储过程。
ex. alter procedure employeetest sql security invoker;
注意*您可以更改安全类型,如..INVOKER或DEFINER
GUI工具免费软件:TOAD for Mysql.