Postgresql Postgre SQL在If附近的语法不正确

Postgresql Postgre SQL在If附近的语法不正确,postgresql,postgresql-9.1,postgresql-9.2,rails-postgresql,Postgresql,Postgresql 9.1,Postgresql 9.2,Rails Postgresql,我试图创建函数,但它在If语句中出错,我不知道它有什么问题 CREATE FUNCTION uspgetcountrylistwithpagenumber(IN "PageNumber" integer, IN "PageSize" integer, IN "WhereClause" text, IN "OrderBy" text) RETURNS SETOF getcountrylistitem AS $BODY$declare RowData "getcountrylist

我试图创建函数,但它在If语句中出错,我不知道它有什么问题

CREATE FUNCTION uspgetcountrylistwithpagenumber(IN "PageNumber" integer, IN "PageSize"         integer, IN "WhereClause" text, IN "OrderBy" text) RETURNS SETOF getcountrylistitem AS
$BODY$declare 
RowData "getcountrylistitem"%rowtype;

    IF $1 <> -1 and $2 <> -1  then
        for RowData in
        loop
            execute 'Select "CountryId","CountryName"' ||
                    'from "MasterCountry"' ||
                    $3 || 
                    $4 ||
                    'limit' || $2 ||
                    'offset' || ($1-1)*$2           
            RETURN NEXT RowData;
        END LOOP;
        RETURN;     
    else
        for RowData in
        loop
            execute 'Select "CountryId","CountryName"' ||
                    'from "MasterCountry"' ||
                    'order by "CountryName" asc'
            RETURN NEXT RowData;
            END LOOP;
            RETURN;
    end IF;
end;
$BODY$
LANGUAGE plpgsql IMMUTABLE;
ALTER FUNCTION public.uspgetcountrylistwithpagenumber(IN integer, IN integer, IN text, IN text)
OWNER TO postgres;
以上是有助于解决问题的参数值
如果需要更多信息,请告诉我。提前感谢您:P

您需要在第一个

IF
之前使用
开始
标记函数体的开始,我没有看到
开始
PageNumber=1
PageSize=10
WhereClause=Where 1=1 and CountryName='INDIA'
OrderByClause=order by CountryName desc