create or replace package PKG_Biz_Claim is
type type_cur is ref cursor; -- 定义游标变量返回记录集
procedure ClaimList
(
Pindex in number, --页码 从1开始
Pfield in varchar2, -- 查询字段
Psql in varchar2, --查询SQL语句
Psize in number , --每页记录数
PpageCount out number, --总页数
PRowCount out number, --总记录数
v_cur out type_cur --分页数据游标
);
end PKG_Biz_Claim;
Create or replace package body PKG_Biz_Claim is
procedure ClaimList
(
Pindex in number, --页码 从1开始
Pfield in varchar2, -- 查询字段
Psql in varchar2, --查询SQL语句
Psize in number , --每页记录数
PpageCount out number, --总页数
PRowCount out number, --总记录数
v_cur out type_cur --分页数据游标
) is
v_sql varchar2(2000);
v_Pstart number;
v_Pend number;
begin
-- 取记录总数
v_sql:= 'select count(1) from (' || Psql || ')';
execute immediate v_sql into PRowCount;
-- 当前页第一条
v_Pstart = (pindex -1)*Psize +1;
-- 当前页最后一条
v_Pend = Pindex * Psize;
v_sql := 'SELECT ' || Pfield || ' from
(SELECT ' || Pfield || ',rownum rn FROM( ' || Psql || ' ) WHERE rownum <= '|| to_char(v_Pend)||')WHERE rn >= ' || to_char(v_Pstart);
OPEN v_cur FOR v_sql;
end ClaimList;
end PKG_Biz_Claim;
包里都定义了存储过程 ,怎么还报错,指向 Create or replace package body PKG_Biz_Claim is 这一行 ? 求解答
------解决方案--------------------
1 一次运行一句
2 在多句之间加/
------解决方案--------------------
-- 当前页第一条
v_Pstart = (pindex -1)*Psize +1;
-- 当前页最后一条
v_Pend = Pindex * Psize;
这两句里应该是用(:=)而不是(=)