2012-10-05 69 views
-1

我試圖在創建成功後更改存儲過程。Mysql:在修改存儲過程時出現#1064錯誤

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

由於您不能使用ALTER PROCEDURE更改過程主體,因此您必須刪除並重新創建相同或使用某些GUI工具進行編輯/更新Mysql存儲過程。

ex. alter procedure employeetest sql security invoker; 

注*您可以更改安全類型like..INVOKER或DEFINER

GUI工具軟件:TOAD for Mysql.