Oracle实践--PL/SQL综合之分页存储过程
2023-09-11 14:21:01 时间
Oracle PL/SQL分页的存储过程
Oracle,分页,存储过程三个词结合起来,来个综合点的小练习,运用之前的PL/SQL创建一个分页的存储过程,仅仅须要简单几步就可以。
1.声明一个引用游标
create or replace package cur_ref_type as-- is or as can be used type cur_ref is ref cursor; end;2.编写存储过程
create or replace procedure divideByPge (tableName varchar2,pageSize number,currentPage number, totalPage out number,totalRecord out number,results out cur_ref_type.cur_ref)--要带包名 is v_sql varchar2(200);--用于写sql语句的 v_begin number;--開始位置 v_end number;--结束位置 begin v_begin := (currentPage -1) * pageSize; v_end := currentPage * pageSize; v_sql :='select count(*) from '||tableName;--将表名字符串拼接sql语句 execute immediate v_sql into totalRecord;--查询全部记录 totalPage :=ceil(totalRecord/pageSize);--计算总页数 v_sql :='select * from (select rownum rn,'||tableName||'.* from '||tableName||' where rownum <= '||v_end||') where rn > '||v_begin; open results for v_sql; end;3.Javaclient调用
String driver ="oracle.jdbc.driver.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String username = "scott"; String password = "ysjian"; try { Class.forName(driver); Connection conn = DriverManager.getConnection(url,username,password); CallableStatement cs = conn.prepareCall("{call divideByPge(?,?,?,?,?,?)}"); cs.setString(1,"emp");//表名 cs.setInt(2, 3);//分页单位 cs.setInt(3, 1);//当前页 cs.registerOutParameter(4, OracleTypes.INTEGER);//注冊输出參数 cs.registerOutParameter(5, OracleTypes.INTEGER); cs.registerOutParameter(6, OracleTypes.CURSOR);//注冊输出參数游标 cs.execute();//运行 ResultSet rs = (ResultSet)cs.getObject(6);//获得游标 while(rs.next()){ int empno = rs.getInt("empno"); String ename = rs.getString("ename"); System.out.println(empno+"-->"+ename); } } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); }文章来源:http://blog.csdn.net/ysjian_pingcx/article/details/25745313
相关文章
- oracle数据库导入导出命令!
- 【Python Oracle】使用cx_Oracle 连接oracle的简单介绍
- 《oracle每天一练》Oracle冷备份与数据恢复
- 《oracle每天一练》Merge Into 语句代替Insert/Update在Oracle中的应用实战
- mybatis oracle两种方式批量插入数据
- 中断ORACLE数据库关闭进程导致错误案例
- Oracle PL/SQL 多重选择句
- Oracle 存储过程调用返回游标的另一个存储过程。
- 如何开启Oracle block change tracking功能?
- oracle通过job定时执行任务
- oracle 10g 32位 快速安装
- Oracle查看和修改其最大的游标数
- Oracle数据库导出
- oracle 判断列是否在数据库中存在
- Oracle存储过程基本语法
- Oracle 存储过程和方法全攻略:实战详解调用技巧与注意事项
- C#中使用Oracle存储过程返回结果集
- 基于ORACLE建表和循环回路来创建数据库存储过程SQL语句来实现
- PostgreSQL的学习心得和知识总结(二十一)|语法级自上而下完美实现Oracle数据库(FROM中的子查询可无别名)功能
- oracle优化思考-双刃剑
- SQL——Sql_Server中如何判断表中某字段、判断表、判断存储过程以及判断函数是否存在
- Oracle 12c中SQLPlus操作使用(包含实验二ORACLE SQL*PLUS环境与查询的详细操作解释)
- 日常工作记录之远程如何获取oracle存储过程的内容