defender_ 2014-06-09 07:15 采纳率: 0%
浏览 2009

初用oracle和PL/SQL 网上找了个分页存储过程,直接拿过来怎么报错。。求解

直接上代码`

create or replace package p_page is
TYPE type_cur IS REF CURSOR; --定义游标变量用于返回记录集

PROCEDURE Pagination(Pindex in number, --分页索引
Psql in varchar2, --产生dataset的sql语句
Psize in number, --页面大小
Pcount out number, --返回分页总数
Prcount out number,--返回总条数
v_cur out type_cur --返回当前页数据记录
);
end p_page;
/
create or replace package body p_page is
PROCEDURE Pagination(
Pindex in number,
Psql in varchar2,
Psize in number,
Pcount out number,
Prcount out number,
v_cur out type_cur
)
AS
v_sql varchar2(2000);
v_count number;
v_Plow number;
v_Phei number;
v_prcount number;

Begin
------------------------------------------------------------取分页总数
--v_sql := 'select count(*) into '||v_count||' from (' || Psql || ')';
v_sql:='select count(*) into '||v_count||' from ('||Psql||')';
execute immediate v_sql;
Pcount := ceil(v_count/Psize);
------------------------------------------------------------显示总条数
v_sql := 'select count(*) from (' || Psql || ')';
execute immediate v_sql into v_prcount;
Prcount := v_prcount; --返回记录总数

------------------------------------------------------------显示任意页内容
v_Phei := Pindex * Psize + Psize;
v_Plow := v_Phei - Psize + 1;
--Psql := 'select rownum rn,t.* from zzda t' ; --要求必须包含rownum字段
v_sql := 'select * from (' || Psql || ') where rn between ' || v_Plow || ' and ' || v_Phei ;

open v_cur for v_sql;

End Pagination;

--**************************************************************************************
end p_page;

--测试:
declare
cur SYS_REFCURSOR;
l_data TMSTEST.BASE_STATION%ROWTYPE;
pageindex number;
pagesize number;
sqll varchar2(2000);
ddd number;
prcount number;
begin
sqll:='select rownum rn,ID from TMSTEST.BASE_STATION';
pageindex:=1;
pagesize:=5;
prcount:=0;
ddd:=0;
p_page.Pagination(pageindex,sqll,pagesize,ddd,prcount,cur);
loop
exit when cur%notfound;
FETCH cur INTO l_data;
DBMS_OUTPUT.put_line (l_data.name);
end loop;
CLOSE cur;
END;

  • 写回答

1条回答

  • defender_ 2014-06-09 07:19
    关注

    在执行sql那里,报这个错:ORA-00936:missing expression

    评论

报告相同问题?

悬赏问题

  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置