【发布时间】:2015-05-06 14:22:44
【问题描述】:
我是 MYSQL 编程的新手,我需要创建一个将动物添加到动物表的存储过程,但它需要检查类别表 (catID) 和区域表中是否存在外键 (区号)。
这是我目前所拥有的,但收到一条错误消息,提示在 END END 附近存在语法错误,我尝试放置括号,但出现更多错误。
如果有人能帮忙那就太好了!
-- checking if the SP already exists and deletes it
DROP PROCEDURE IF EXISTS sp_AddAnimal;
-- creates the stored procedure to add animals to the Animal Table
DELIMITER $$
CREATE PROCEDURE sp_AddAnimal
(
IN p_animalType VARCHAR(30),
IN p_weight VARCHAR(6) ,
IN p_gender VARCHAR(7) ,
IN p_age VARCHAR(4) ,
IN p_stock INT ,
IN p_catID INT ,
IN p_areaID INT
)
BEGIN
IF EXISTS (SELECT catID FROM Catagory WHERE Catagory.catID = p_catID) THEN
BEGIN
IF EXISTS (SELECT areaID FROM Area WHERE Area.areaID = p_areaID) THEN
BEGIN
INSERT INTO Animal
(
animalType ,
weight ,
gender ,
age ,
stock ,
catID ,
areaID
)
VALUES
(
p_animalType ,
p_weight ,
p_gender ,
p_age ,
p_stock ,
p_catID ,
p_areaID
) ;
END
END
END
DELIMITER;
【问题讨论】:
-
对于 IF 语句,使用 END IF;另外,不要忘记分号。
-
如果您仍然卡住,This documentation 可能会帮助您。
标签: mysql stored-procedures mysql-error-1064