使用oracle存储过程编写分页
来源:互联网 发布:arguest .js 编辑:程序博客网 时间:2024/05/10 07:13
编写一个存储过程,要求可以输入表名,每页显示记录数,当前页。返回总记录数,总页数和返回的结果集。并按工资排序输出。
第一步:建立一个包并声明一个游标
create or replace package pagingPackage as
type paging_cursor is ref cursor;
end pagingPackage;
第二步:编写分页的过程
create procedure paging
(tableName in varchar2 ,--表名
pageSizes in number,--每页显示记录数
pageNow in number,--当前页
rowNums out number,--总记录数
pageNum out number,--总页数
paging_curs or out pagingPackage.paging_cursor) is
--定义部分
--定义sql语句,字符串
v_sql varchar2(1000);
--定义两个整数,用于表示每页的开始和结束记录数
v_begin number:=(pageNow-1)*pageSizes+1;
v_end number:=pageNow*pageSizes;
begin
--执行部分
v_sql:='select * from(select t1.*,rownum rn from (select * from '||tableName||') t1 where rownum<='||v_end||') where rn>='||v_begin;
--把游标和sql语句关联
open paging_curor for v_sql;
--计算rowNums和pageNum
--组织一个sql语句
v_sql:='select count(*) from '||tableName;
--执行该sql语句,并赋给rowNums
execute immediate v_sql into rowNums;
--计算pageNum
if mod(rowNums,pageSizes)=0 then
pageNum :=rowNums/pageSizes;
else
pageNum :=rowNums/pageSizes+1;
end if;
end;
第三步:在java中调用
package com.conn;
//jdbc 方式
import java.sql.*;
publicclass conn
{
publicstaticvoid main(String[]args)
{
//1、加载驱动
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
//2、得到连接
Connectionct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","scott","wjq");
//创建CallableStatement,专门用于调用存储过程
CallableStatement cs=ct.prepareCall("{call paging(?,?,?,?,?,?)}");
//给问号赋值
cs.setString(1,"emp");
cs.setInt(2,5);
cs.setInt(3,1);
//输出
cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR);
//执行
cs.execute();
//得到结果集
int myrows=cs.getInt(4);
int mypagecount=cs.getInt(5);
ResultSet rs=(ResultSet)cs.getObject(6);
//输出返回值
System.out.println("rownum:"+myrows);
System.out.println("总页数"+mypagecount);
while(rs.next()){
System.out.println("编号是:"+rs.getInt(1)+""+'\t'+"姓名:"+rs.getString(2)+""+'\t'+rs.getDouble(6)); }catch(Exception e)
{
e.printStackTrace();
}finally{
//关闭打开的资源
}
}
}
执行结果:
- 使用oracle存储过程编写分页
- oracle编写分页存储过程
- oracle分页存储过程编写案例
- 使用oracle存储过程分页
- Oracle使用存储过程分页
- Oracle分页语句介绍和编写分页的存储过程
- oracle中使用存储过程实现分页
- PL/SQL中编写Oracle数据库分页的存储过程
- PL/SQL中编写Oracle数据库分页的存储过程
- 使用Java编写oracle存储过程
- 使用Java编写oracle存储过程
- 使用Java编写Oracle存储过程
- oracle存储过程分页
- oracle存储过程分页
- Oracle分页存储过程
- Oracle 存储过程分页
- ORACLE分页存储过程
- oracle 分页存储过程
- CSS的子选择器与后代选择器的区别
- StringBuffer
- CODE[VS] 1201
- 关于css中的block元素inline元素 以及positison属性的初步认识。
- IOS状态栏的显示隐藏
- 使用oracle存储过程编写分页
- Spring分布式事务实现(适用于spring-tx 2.5)
- 机器学习——Gradient Boost Decision Tree(&Treelink)
- 程序员修炼之路(四)走近腾讯 走进腾讯(一个关于面试准备的记录)
- 数据挖掘:数据清洗、转换和消减
- 内核代号101 — 动手写自己的内核
- 分布式事务处理:原理、不足
- R语言绘图篇
- Learning Selenium WebDriver