IF语句中变量附近的SQL语法错误

时间:2013-03-15 13:00:19

标签: mysql function if-statement

我是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吗?

1 个答案:

答案 0 :(得分:1)

使用BEGINEND语句,

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 ;