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##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体