函数中if语句的Postgresql语法错误

时间:2014-09-12 16:45:35

标签: postgresql plpgsql

我正在尝试在postgresql中编写一个函数,我收到 if 语句的语法错误:

CREATE OR REPLACE FUNCTION getallcampuses(IN a character varying, IN b character varying)
  RETURNS TABLE(campusid charactervarying, campusname character varying) AS
$BODY$
BEGIN
if $1 = 'PREK' then
     SELECT * from "SIS_campus";
ELSE
    BEGIN
       IF $2 = 'DAll' then
           SELECT distinct(district_id) || 'ALL' AS CampusID, ' District' AS CampusName

           UNION

           SELECT campus_id, name
           FROM   "SIS_campus"
           WHERE  district_name IS NOT NULL
           order by name;
       Elsif $2 = 'All' then

           SELECT campus_id, name
           FROM   "SIS_campus"
           WHERE  district_name IS NOT NULL
           and isnumeric(name) = 0
           order by name;
        end if;
    END
end if;
END
$BODY$
LANGUAGE sql;

这是错误:

ERROR:  syntax error at or near "if"
LINE 5: if $1 = 'PREK' then
        ^

1 个答案:

答案 0 :(得分:2)

函数体是PL / PgSQL,但是你声明它为LANGUAGE sql

如果您正在编写PL / PgSQL,请使用LANGUAGE plpgsql

related prior answer