我是MySQL的新手,我得到了:
IF语句的'IsTrue = 1 THEN'附近的SQL语法错误
MySQL功能如下:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` FUNCTION `GetABCD`(Var1 int, Var2 int,Var3 Int, IsTrue int) RETURNS decimal(24,14)
Return (
IF IsTrue=1 THEN
Select sum(A) E from e_pnfi
where ID = (select ID from Main where CenterID=Var1
and YourID=(Select YourID from year Where Year=Var2)) and res in (select highid from industry where mediumid=Var3)
ELSE
Select sum(A) E from e_pnfi
where ID = (select ID from Main where CenterID=Var1
and YourID=(Select YourID from year Where Year=Var2)) and res in (select highid from industry where highid=Var3)
END IF;
)
我哪里出错了?任何人都可以帮助PLZ吗?
答案 0 :(得分:1)
使用BEGIN
和END
语句,
DELIMITER $$
CREATE FUNCTION `GetABCD`(Var1 int, Var2 int,Var3 Int, IsTrue int)
RETURNS decimal(24,14)
BEGIN
DECLARE retVal DECIMAL(24,14);
IF IsTrue=1 THEN
SET retVal =
(
SELECT SUM(A) E
FROM e_pnfi
WHERE ID IN (SELECT ID FROM Main WHERE CenterID = Var1) AND
YourID IN (SELECT YourID FROM year WHERE Year = Var2) AND
res IN (SELECT highid FROM industry WHERE mediumid = Var3)
);
ELSE
SET retVal =
(
SELECT sum(A) E
FROM e_pnfi
WHERE ID IN (SELECT ID FROM Main WHERE CenterID = Var1) AND
YourID IN (SELECT YourID FROM year WHERE Year = Var2) AND
res in (SELECT highid FROM industry WHERE highid = Var3)
);
END IF;
RETURN retVal;
END $$
DELIMITER ;