0

我是 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;

)

我哪里错了?有人可以帮忙吗?

4

1 回答 1

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 ;
于 2013-03-15T13:01:36.460 回答