MySQL中的嵌套if语句
问题描述:
我正在制作一个插入地点(“Sted”)的过程,我想检查输入是否为NULL。但是,每当我尝试在开始时添加一个if语句来包围我的代码(下面标记为“CRASH”)时,它会给我一个错误,说我的语法在“DECLARE varStedskodeID INT;”处不正确。这是我试图添加的IF语句之后的部分。MySQL中的嵌套if语句
在我眼中,我的if语句的语法在代码中是相同的,但是只有我即将进行的NULL检查if语句甚至只是简单的IF(TRUE)就会崩溃。
任何人都可以给我一个什么原因导致这一个,如果崩溃的提示?
DROP PROCEDURE IF EXISTS InsertSted;
DELIMITER $$
CREATE PROCEDURE InsertSted(
IN inputStedsnavn VARCHAR(255),
IN inputStedstype VARCHAR(255),
IN inputKommunenavn VARCHAR(255))
BEGIN
IF(TRUE) THEN <<------ CRASH
DECLARE varStedskodeID INT;
DECLARE varKommunenr INT;
IF(SELECT COUNT(StedkodeID) FROM stedstype WHERE Kodenavn = inputStedstype LIMIT 1) = 0 THEN
INSERT INTO stedstype VALUES(DEFAULT, inputStedstype);
END IF;
SET varStedskodeID = (SELECT StedkodeID FROM stedstype WHERE Kodenavn = inputStedstype LIMIT 1);
IF(SELECT COUNT(Kommunenr) FROM kommune WHERE Kommunenavn = inputKommunenavn LIMIT 1) = 1 THEN
SET varKommunenr = (SELECT Kommunenr FROM kommune WHERE Kommunenavn = inputKommunenavn LIMIT 1);
INSERT INTO sted VALUES(DEFAULT, inputStedsnavn, varStedskodeID, varKommunenr);
END IF;
END IF; <<------ CRASH
END$$
DELIMITER ;
答
DECLARE只允许在BEGIN ... END复合语句 并且必须在它的开始,任何其他语句之前。
http://dev.mysql.com/doc/refman/5.0/en/declare.html
的MySQL遵循严格的规则DECLARE
。您必须在存储过程开始时为DECLARE
变量,表格等。
更改存储过程是这样
DECLARE varStedskodeID INT;
DECLARE varKommunenr INT;
IF(TRUE) THEN
IF(SELECT COUNT(StedkodeID) FROM stedstype WHERE Kodenavn = inputStedstype LIMIT 1) = 0 THEN
INSERT INTO stedstype VALUES(DEFAULT, inputStedstype);
END IF;
SET varStedskodeID = (SELECT StedkodeID FROM stedstype WHERE Kodenavn = inputStedstype LIMIT 1);
IF(SELECT COUNT(Kommunenr) FROM kommune WHERE Kommunenavn = inputKommunenavn LIMIT 1) = 1 THEN
SET varKommunenr = (SELECT Kommunenr FROM kommune WHERE Kommunenavn = inputKommunenavn LIMIT 1);
INSERT INTO sted VALUES(DEFAULT, inputStedsnavn, varStedskodeID, varKommunenr);
END IF;
END IF;
首先尝试'declare'变量然后执行结果 – 2014-10-17 09:53:18