创建 MySQL 存储过程时出现问题

Problems to create MySQL Stored Procedure

我正在尝试创建这个程序:

DELIMITER //
CREATE PROCEDURE PA_INCLUDE_SETTING
(IN SettingType INT(10),
IN SettingName INT(10),
IN Active INT(1),
OUT result INT(1))
BEGIN
    DECLARE exist INT;
    SELECT COUNT(*) INTO exist 
    FROM tbSetting 
    WHERE nmSetting = SettingName
    AND cdSettingType = SettingType;
    IF (exist > 0) THEN
        DECLARE active INT;
        SELECT cdActive INTO active 
        FROM tbSetting
        WHERE nmSetting = SettingName
        AND cdTypeSetting = SettingType;
        IF (active = 0) THEN
            UPDATE tbSetting 
            SET cdActive = 1
            WHERE nmSetting = SettingName
            AND cdSettingType = SettingType;
            SET result = -1;
        ELSE 
            SET result = -2;
        END IF;
    ELSE 
        INSERT INTO tbSetting 
        (cdSettingType, nmSetting, cdActive)
        VALUES (SettingType, Setting, Active);
        SET result = 0;
    END IF;
END //
DELIMITER ;

我正在使用这个 table:

 CREATE TABLE tbSetting
 (
        cdSettingType INT(10) NOT NULL,
        cdSetting INT(10) IDENTITY(1,1) NOT NULL, 
        nmSetting VARCHAR(30),
        cdActive INT(1),
        CONSTRAINT pk_cdSetting PRIMARY KEY (cdSettingType, cdSetting )
  )

我收到此错误消息:

#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 'DECLARE active INT;
            SELECT cdActive
            FROM tbSetting
            WHERE n' at line 13

第一次创建这么复杂的存储过程,不明白为什么会出现这个错误。

提前感谢您的帮助!

声明应紧跟在 begin 块之后。所以只需将声明移至函数的开头即可:

BEGIN
    DECLARE exist INT;
    DECLARE active INT;

    . . .

顺便说一句,exist 是一个非常糟糕的变量名称,因为它与 MySQL 保留字非常相似。