oracle存储过程分页
来源:互联网 发布:吉利知豆d3 编辑:程序博客网 时间:2024/05/17 22:04
1. 首先建一个包pkg_query如下:
CREATE OR REPLACE PACKAGE pkg_query AS TYPE cur_query IS REF CURSOR;END pkg_query;/
2. 然后创建存储过程prc_query如下:
CREATE OR REPLACE PROCEDURE prc_query (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 || 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' || 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 prc_query;/
这就建好了oracle下的用于分页的存储过程。
这是在pl/sql测试的结果(如下图):
- oracle存储过程分页
- oracle存储过程分页
- Oracle分页存储过程
- Oracle 存储过程分页
- ORACLE分页存储过程
- oracle 分页存储过程
- Oracle分页存储过程
- Oracle分页存储过程
- Oracle存储过程分页
- oracle 分页存储过程
- Oracle存储过程分页
- Oracle分页存储过程
- oracle 分页 存储过程
- Oracle存储过程分页
- oracle分页存储过程
- Oracle分页存储过程
- oracle存储过程分页
- oracle 存储过程分页
- 福建省委办公厅公务员考试头名因性格原因拒录-公务员-考试-拒录
- JavaScript验证页面
- 数据库设计中常见表结构的设计技巧
- 第八周上机任务(求还款金额)
- JQuery Ajax获取返回html中指定的内容
- oracle存储过程分页
- android 关于canvas.translate(x,y)
- win32 windows编程实现菜单栏
- 闲聊一句,目前连民工都不如
- 李长春抵达伊斯兰堡开始访问巴基斯坦-李长春-巴基斯坦-伊斯兰堡
- 数据库的查询优化技术
- Android用代码安装APK,不用选择“打包安装程序”
- 学习目录
- PHP读写XML文件