0

我正在尝试创建函数,但在 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;

我想要实现的是自定义分页.. 我想要一个可以接受 PageNumber、PageSize、WhereClause 和 OrderByClause 的函数

PageNumber=1
PageSize=10
WhereClause=Where 1=1 and CountryName='INDIA'
OrderByClause=order by CountryName desc

以上是有助于解决我的问题的参数值如果需要更多信息,请告诉我。提前谢谢你..:P

4

1 回答 1

1

你需要一个BEGIN在第一个之前IF

于 2013-07-11T13:19:27.363 回答