首页 > 代码库 > PL/SQL编程—分页功能(存储过程)
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编程—分页功能(存储过程)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。