• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Oracle分页语句介绍和编写分页的存储过程

mysql 搞代码 4年前 (2022-01-09) 35次浏览 已收录 0个评论

–Oracle分页语句介绍–为每条记录编号select t1.*,rownum rn from (select * from emp) t1;–取出前10条记录select t1.*,rownum

–Oracle分页语句介绍
–为每条记录编号
select t1.*,rownum rn from (select * from emp) t1;
–取出前10条记录
select t1.*,rownum rn from (select * from emp) t1 where rownum<=10;
–取出第6条到第10条记录,此语句可以作为分页的一个模板
select * from
(select t1.*,rownum rn from (select * from emp) t1 where rownum<=10)
where rn>=6;
–开始编写分页的过程
–1、先创建一个包,包中定义类型test_cursor,是个游标
create or replace package testpackage as
type test_cursor is ref cursor;
end testpackage;
–2、编写分页的存储过程
create or replace procedure fenye
(tableName in varchar2,
pageSize in number,–每页最多可以显示的记录条数
pageNow in number,–当前是第几页
myRows out number,–查询出的记录总共有多少条
myPageCount out number,–查询出的记录总共可以分多少页
p_cursor out testpackage.test_cursor–返回查询结果的记录集
) is
–定义部分
–定义sql语句
v_sql varchar2(1000);
–定义两个整数并赋值
v_begin number:=(pageNow-1)*pageSize+1;
v_end number:=pageNow*pageSize;
begin
–执行部分
–并对员工工资按由高到低排列
v_sql:=’select * from (select t1.*,rownum rn from (select * from ‘|| tableName
||’ order by sal) t1 where rownum=’|| v_begin;
open p_cursor for v_sql;
–计算myRows和myPageCount
–重新给v_sql赋值
v_sql:=’select count(*) from ‘||tableName;
–执行sql,并把返回的值付给myRows
execute immediate v_sql into myRows;
–计算myPageCount
if mod(myRows,pageSize)=0 then
myPageCount:=myRows/pageSize;
else
myPageCount:=myRows/pageSize+1;
end if;
–关闭游标
–close p_cursor;
end;

–使用java代码调用这个存储过程

package test;
import java.sql.*;
public class FenYe{
public static void main(String[] args){
try{
//加载数据库驱动
Class.forName(“oracle.jdbc.driver.OracleDriver”);
//获取数据库连接
Connection conn = DriverManager.getConnection(
“jdbc:oracle:thin:@127.0.0.1:1521:ORCL”,”scott”,”tiger”);
//创建CallableStatement对象
CallableStatement cs = conn.prepareCall(“{call fenye(?,?,?,?,?,?)}”);
//给前三个输入参数的?赋值
cs.setString(1,”emp”);//要查询的是emp表
cs.setInt(2,5);//每页显示5条记录
cs.setInt(3,1);//先显示第一页
//注册总记录数
cs.registerOutParameter(4,oracle.jdbc.OracleTypes.INTEGER);
//注册总页数
cs.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);
//注册结果集
cs.registerOutParameter(6,or来源gaodaimacom搞#^代%!码网acle.jdbc.OracleTypes.CURSOR);
//执行存储过程
cs.execute();

//接收返回的总记录数
int rowNum = cs.getInt(4);
//接收返回的总页数
int pageCount = cs.getInt(5);
//接收返回的结果集
ResultSet rs = (ResultSet)cs.getObject(6);

//打印输出结果
System.out.println(“总记录数:” + rowNum);
System.out.println(“总页数:” + pageCount);
System.out.println(“==========每页显示” +5 + “条===========”);
System.out.println(“==========当前是第” +1 + “页===========”);
int i = 1;
while(rs.next()){
System.out.println(“(” + (i++) + “)编号:” + rs.getInt(1) + “,,姓名:” + rs.getString(2) + “, 工资:” + rs.getInt(6));
}
}catch(Exception e){
e.printStackTrace();
}
}
}

需要说明的是上面的代码只是为了简单演示一下调用数据库中的分页存储过程,所以对数据库资源的连接和关闭作优化(甚至没有关闭连接,关闭结果集等)。

实际开发中是必须关闭和释放数据库资源的。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Oracle分页语句介绍和编写分页的存储过程
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址