PL/SQL编程—分页功能(存储过程)
Posted 翎野
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PL/SQL编程—分页功能(存储过程)相关的知识,希望对你有一定的参考价值。
SQL> create table t_book(bookid varchar2(3),bookname varchar2(50),publish varchar2(50)); Table created SQL> SQL> create or replace procedure sp_add_book(bookid in varchar2, bookname in varchar2,publish in varchar2) is 2 begin 3 insert into t_book values(bookid,bookname,publish); 4 end; 5 / Procedure created SQL> select * from t_book; BOOKID BOOKNAME PUBLISH ------ -------------------------------------------------- -------------------------------------------------- 1 OracleTestForMine ShenZhenPublish
SQL> create or replace procedure sp_get_mytest(id_in in varchar2,name_out out varchar2,salary_out out number,bonus_out out number,job_out out varchar2) is 2 begin 3 select name,salary,bonus,job into name_out,salary_out,bonus_out,job_out from mytest where id=id_in; 4 end; 5 / Procedure created
SQL> create or replace package sp_pack_mulityqry as 2 type p_cursor is ref cursor; 3 end sp_pack_mulityqry; 4 / Package created
--创建一个游标类 create or replace package sp_pack_pagebycursor as type p_cursor is ref cursor; end sp_pack_pagebycursor; / --利用存储过程来实现分页功能 create or replace procedure fenye( tablename in varchar2, curpage in number, pagerownum in number, orderflg in varchar2, totalrownum out number, totalpagenum out number, res_cursor out sp_pack_pagebycursor.p_cursor ) is --定义sql语句变量 v_sql varchar2(1000); --定义查询起始下标 v_begin_rownum number:=(curpage-1)*pagerownum+1; --定义查询结束下表 v_end_rownum number:=curpage*pagerownum; --执行 begin --定义数据库查询sql v_sql:=\'select * from (select t.*,rownum rn from (select * from \'||tablename||\' order by salary \'||orderflg||\') t where rownum<=\'||v_end_rownum||\') where rn>=\'||v_begin_rownum; --关联游标和sql open res_cursor for v_sql; --查询总记录数 v_sql:=\'select count(*) from \'||tablename; execute immediate v_sql into totalrownum; --计算总页数 if mod(totalrownum,pagerownum)=0 then totalpagenum:=totalrownum/pagerownum; else totalpagenum:=totalrownum/pagerownum+1; end if; end; /
以上是关于PL/SQL编程—分页功能(存储过程)的主要内容,如果未能解决你的问题,请参考以下文章