创建 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 保留字非常相似。
我正在尝试创建这个程序:
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 保留字非常相似。