存储过程 create or replace package pkg_query
as type
cur_query is ref cursor;
procedure proc_qurey
(
p_tableName in varchar2, --表名
p_strWhere in varchar2, --查询条件
p_orderColumn in varchar2, --排序的列
p_orderStyle in varchar2, --排序方式
p_curPage in out Number, --当前页
p_pageSize in out Number, --每页显示记录条数
p_totalRecords out Number, --总记录数
p_totalPages out Number, --总页数
v_cur out pkg_query.cur_query); --返回的结果集
end pkg_query;
create or replace package body pkg_query
is
create or replace
procedure proc_qurey
(
p_tableName in varchar2, --表名
p_strWhere in varchar2, --查询条件
p_orderColumn in varchar2, --排序的列
p_orderStyle in varchar2, --排序方式
p_curPage in out Number, --当前页
p_pageSize in out Number, --每页显示记录条数
p_totalRecords out Number, --总记录数
p_totalPages 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' || p_tableName || 'where 1=1';
if p_strWhere is not null or p_strWhere <> '' then
v_sql:=v_sql || ' and '|| p_strWhere;
end if;
execute immediate v_sql into p_totalRecords;
--验证页面记录大小
if p_pageSize<0 then
p_pageSize:=0;
end if;
--根据页大小计算总页数
if mod(p_totalRecords,p_pageSize) =0 then
p_totalPages := p_totalRecords /p_pageSize;
else
p_totalPages := p_totalRecords / p_pageSize + 1;
end if;
--验证页号
if p_curPage<1 then
p_curPage:=1;
end if;
if p_curPage > p_totalPages then
p_curPage:=p_totalPages;
end if;
--实现分页查询
v_startRecord:=(p_curPage-1)* p_pageSize+1;
v_endRecord :=p_curPage* p_pageSize;
v_sql := 'select * from (select a.*, rownum r from ' || '(select * from ' || p_tableName;
if p_strWhere is not null or p_strWhere <> '' then
v_sql := v_sql || ' where 1=1 and ' || p_strWhere;
end if;
if p_orderColumn IS NOT NULL or p_orderColumn <> '' then
v_sql := v_sql || ' order by ' || p_orderColumn || ' ' || p_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 proc_qurey;
end pkg_query;
分享到:
相关推荐
Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码
ibatis调用oracle存储过程分页
Oracle 存储过程 Oracle分页 oracle分页
oracle 存储过程分页,个人学习笔记。
ORACLE存储过程分页
java 调用Oracle存储过程进行分页详解
oracle存储过程分页.docx 是打发发送到发送到发生的士大夫撒旦发生士大夫撒旦
基于ORACLE存储过程分页的实现方法.pdf
一个简单的oracle存储过程分页技术,希望对大家的学习,开发有所帮助。 执行步骤: 1:在oralce客户端执行OracleSplit类中的包,和存储过程。 2:采用的是oracle只带的表emp大家下载后只需要把数据库名改为本地的...
oracle分页查询并返回总记录数据的存储过程
Oracle的分页查询语句以及Oracle分页的存储过程
NULL 博文链接:https://jsufly.iteye.com/blog/646683
Oracle分页+.cs代码+存储过程+Aspnetpager分页控件 有详细的default.aspx页面调用实例代码
1、请先在Oracle数据中新建存储过程 2、修改代码中的相关参数。比如,连接数据库字符串,查询的sql语句等 注意:查询sql语句中必须包含rownum字段,别名是rn。rownum是Oracle关键字。 存储是来自...
项目开发中写的oracle 增加,删除,修改,分页存储过程,含有对条件的判断和错误处理
oracle分页存储过程,oracle分页存储过程
一个通用的存储过程,完成分页查询数据,只需要在查询的最后调用此过程,即可实现分页和按分页进行查询数据
高效多条件 Oracle 分页存储过程 ,快速分页
SQL Server 存储过程及Oracle SQL语句分页