Oracle分页存储过程
2017-08-28 11:38
239 查看
第一步要先建立包
第二步写存储过程语句
create or replace package pkg_query is type cur_query is ref cursor; procedure met_down_query( m_tablename in varchar2,--表名 m_strwhere in varchar2,--查询条件 m_ordercolumn in varchar2,--排序字段 m_orderstyle in varchar2,--排序方式 m_currpage in out number,--当前页 m_pagesize in out number,--每页显示的记录数 m_totalrow out number,--总记录数 m_totalpage out number,--总页数 v_cur out cur_query --返回结果集 ); end pkg_query;
第二步写存储过程语句
create or replace procedure met_down_query( m_tablename in varchar2,--表名 m_strwhere in varchar2,--查询条件 m_ordercolumn in varchar2,--排序字段 m_orderstyle in varchar2,--排序方式 m_currpage in out number,--当前页 m_pagesize in out number,--每页显示的记录数 m_totalrow out number,--总记录数 m_totalpage out number,--总页数 v_cur out pkg_query.cur_query --返回结果集 ) is v_sql varchar2(1000):=''; --sql语句 v_startrecord number(4);--开始记录数 v_endrecord number(4);--结束记录数 begin --总记录数 v_sql:='select to_number(count(*)) from '||m_tablename||' where 1=1'; if m_strwhere is not null or m_strwhere <>'' then v_sql:=v_sql || m_strwhere; end if; execute immediate v_sql into m_totalrow; --验证页面大小 if m_pagesize<0 then m_pagesize:=0; end if; --根据页面大小计算总页数 if mod(m_totalrow,m_pagesize)=0 then m_totalpage:=m_totalrow/m_pagesize; else m_totalpage:=m_totalrow/m_pagesize+1; end if; --验证页号 if m_currpage<1 then m_currpage:=1; end if; if m_currpage>m_totalpage then m_currpage:=m_totalpage; end if; --实现分页查询 v_startrecord:=(m_currpage-1)*m_pagesize+1; v_endrecord:=m_currpage*m_pagesize; v_sql:='select * from (select a.*,rownum r from '|| '(select * from '||m_tablename; if m_strwhere is not null or m_strwhere <> '' then v_sql:=v_sql || 'where 1=1 '||m_strwhere; end if; if m_ordercolumn is not null or m_ordercolumn <> '' then v_sql:=v_sql || 'order by '||m_ordercolumn||''||m_orderstyle; end if; v_sql:=v_sql||')a where rownum<='||v_endrecord||')b where r>=' ||v_startrecord; dbms_output.put_line(v_sql); open v_cur for v_sql; end met_down_query;
相关文章推荐
- Oracle分页存储过程
- Oracle之存储过程实现分页
- hibernate里使用jdbc方式调用oracle带游标返回参数的简单分页存储过程
- Oracle使用存储过程分页
- CYQ.Data 数据框架 数据库分页方式及存储过程[SQL2000/SQL2005/Oracle]
- Oracle中通过存储过程实现分页
- Oracle ——存储过程——分页
- Oracle通用分页存储过程的创建与使用
- oracle中使用存储过程实现分页
- oracle分页存储过程
- Oracle通用分页存储过程的创建与使用
- oracle 存储过程实现分页
- oracle带输入输出参数存储过程(包括sql分页功能)
- oracle用存储过程实现分页
- Oracle大数据量分页通用存储过程
- oracle 中 Procedues (存储过程) 简单的分页。
- Oracle实践--PL/SQL综合之分页存储过程
- Oracle带输入输出参数存储过程(包括sql分页功能)
- oracle的存储过程实现数据分页
- Oracle分页存储过程