`
zakaz168
  • 浏览: 41897 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

PL/SQL 分页

阅读更多
--分页查询
create or replace package testpackage as
type testcursor is ref cursor;
end testpackage;
/

--select * from (select rownum rn,a1.* from (select * from emp)a1 where rownum<=10) where rn>=6;
create or replace procedure zk_pro7(
  zk_table in varchar2,
  zk_pagesize in number,
  zk_pagenow in number,
  zk_rownum out number,
  zk_rowcount out number,
  zk_cursor out testpackage.testcursor)
is
  v_sql varchar2(1000);
  v_begin number:=(zk_pagenow-1)*zk_pagesize;
  v_end number:=zk_pagenow*zk_pagesize;
begin
  v_sql:='select * from (select rownum rn,a1.* from (select * from '||zk_table||')a1 where rownum<='||v_end||') where rn>='||v_begin;
  open zk_cursor for v_sql;
  v_sql:='select count(*) from '||zk_table;
  execute immediate v_sql into zk_rownum;
  if mod(zk_rownum,zk_pagesize)=0 then
    zk_rowcount := zk_rownum/zk_pagesize;
  else 
    zk_rowcount:=zk_rownum/zk_pagesize+1;
  end if;
  --关闭游标
  close zk_cursor;
end;
/


package com.gentle;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;

public class Test1 {
	
	private static Connection connection = null;
	private static CallableStatement statement = null;
	private static ResultSet resultSet = null;
	
	public static void main(String[] args) {
		conn();
	}
	
	static void conn() {
		try {
			Class.forName("oralce.jdbc.driver.OracleDriver");
			connection = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORACLE","scott","tiger");
			statement = connection.prepareCall("{call zk_pro7(?,?,?,?,?,?)}");
			statement.setString(1, "emp");
			statement.setInt(2, 3);
			statement.setInt(3, 1);
			statement.registerOutParameter(4, oracle.jdbc.OracleTypes.NUMBER);
			statement.registerOutParameter(5, oracle.jdbc.OracleTypes.NUMBER);
			statement.registerOutParameter(6, oracle.jdbc.OracleTypes.CURSOR);
			statement.execute();
			int rownum = statement.getInt(4);
			int rowcount = statement.getInt(5);
			System.out.println("rownum:" + rownum);
			System.out.println("rowcount:" + rowcount);
			resultSet = (ResultSet) statement.getObject(6);
			
			while(resultSet.next()) {
				resultSet.getString("ename");
				resultSet.getInt("sal");
				resultSet.getDate("hiredate");
				//....
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			closeDB();
		}
		
	}
	
	static void closeDB() {
		if(connection!=null) {
			try {
				connection.close();
				connection = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(statement!=null) {
			try {
				statement.close();
				statement = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		if(resultSet!=null) {
			try {
				resultSet.close();
				resultSet = null;
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}

}

分享到:
评论
2 楼 zakaz168 2012-01-12  
123048591 写道
count(*)打错了~

马上改
1 楼 123048591 2012-01-11  
count(*)打错了~

相关推荐

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...

    Oracle PL/SQL培训课件

    Oracle PL/SQL是一种在Oracle数据库环境中使用的编程语言,它结合了SQL(结构化查询语言)的查询能力与过程式编程语言的功能。此培训课件旨在帮助开发人员掌握Oracle数据库的开发技能,特别是针对那些已经有SQL基础...

    15oracle的PL/SQL编程-分页 PPT

    Oracle的PL/SQL编程在处理大量数据时,经常会用到分页查询,这不仅可以提高查询效率,还能有效地减少网络传输的数据量,提升用户体验。在本PPT中,我们将深入探讨Oracle PL/SQL实现分页查询的策略和技术。 一、什么...

    PL/SQL中文使用说明

    ### PL/SQL 7.0中文使用说明 #### 一、概述 《PL/SQL Developer 7.0中文使用说明书》是一份详尽的技术文档,旨在帮助用户从安装配置到实际应用全面掌握PL/SQL Developer这款强大的Oracle客户端工具。本文档不仅...

    北风网项目培训PLSQL编程之BBS实战项目第二讲

    PL/SQL是Oracle数据库系统中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构查询语言。它是SQL的扩展,为数据库管理提供了更强大的编程能力,允许开发者编写存储过程、函数、...

    pl/sql developer

    ### PL/SQL Developer知识点概述 #### 一、简介 **PL/SQL Developer**是一款专为Oracle数据库设计的集成开发环境(IDE),它极大地简化了PL/SQL语言的应用开发过程。这款软件提供了丰富的功能来帮助开发者高效地...

    java调用PLSQL分页过程.doc

    ### Java调用PL/SQL分页过程详解 #### 一、背景介绍 在现代软件开发中,Java 和数据库之间的交互非常频繁。对于大型系统来说,数据处理能力是至关重要的,尤其是在处理大量数据时,如何有效地分页显示这些数据是一...

    oracle Pl/sql编程经典入门

    ### Oracle PL/SQL 编程经典入门知识点解析 #### 一、简单程序 在 Oracle PL/SQL 中,简单程序通常指的是基本的 SQL 查询语句,用于检索数据库中的数据。例如,根据特定条件筛选记录。 ##### 示例 - **查询薪资...

    Oracle PL SQL Recipes.pdf

    ### Oracle PL/SQL Recipes知识点概览 #### 一、书籍简介 《Oracle PL/SQL Recipes:一种问题解决方法》是一本由Josh Juneau与Matt Arena合著的专业书籍,旨在为Oracle PL/SQL开发者提供一系列实用的解决方案。本书...

    Oracle教程之pl/sql简介

    本文实例讲述了Oracle的pl/sql。分享给大家供大家参考,具体如下: 一、pl/sql 是什么 pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。 pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许...

    pl sql示例

    6. **分页.sql**:在处理大量数据时,分页是常见的需求。这通常涉及到计算OFFSET和FETCH子句,以获取特定范围的记录,使用户能够按页浏览数据。 7. **游标1.sql**:这可能是另一个游标示例,可能展示了更复杂的用法...

    Oracle数据库第5讲.pptx

    2. **模块化设计**:通过PL/SQL,开发者可以创建存储过程,将复杂的业务逻辑封装成独立的模块,如分页、订单处理或转账等,使得代码更易于管理和维护。 3. **减少网络传输**:通过将大量操作集中在服务器端执行,...

    利用PLSQL实现分页查询代码.rar

    在Java开发中,调用Oracle数据库的PL/SQL分页查询通常会使用JDBC(Java Database Connectivity)。以下是一个简单的Java代码片段,展示了如何通过CallableStatement调用上面定义的PL/SQL游标过程: ```java import ...

    oracle笔记(韩顺平oracle视频教学整理)

    18. PL/SQL分页:讲解了在PL/SQL中实现数据分页查询的方法。 19. 例外处理:讲述了在PL/SQL程序中如何处理异常情况,以确保程序的健壮性。 20. Oracle的视图:介绍了视图的概念和作用,以及视图与其它数据库系统...

    PL/SQL中编写Oracle数据库分页的存储过程

    此文以oracle数据库中的SCOTT用户的EMP表为例,用PL/SQL Developer编写一个分页存储过程,要求是:可以输入表名,每页显示记录数,当前页,返回总记录数,总页数和返回的结果集。 由于需要返回查询出来的结果集,...

    Oracle数据库第5讲.ppt

    2. 模块化设计:PL/SQL使得复杂的业务逻辑可以被封装成独立的模块,如分页过程、订单处理过程和转账过程,便于管理和维护。 3. 减少网络传输:将多次SQL操作合并为一次调用,降低了网络通信的开销。 4. 安全性:通过...

    韩顺平 oracle PPT资料

    PL/SQL分页 - **分页技术**:介绍如何使用ROWNUM等技术实现结果集的分页显示。 #### 17. 例外处理 - **异常处理机制**:理解Oracle中的异常处理机制。 - **自定义异常**:学习如何定义和处理自定义异常。 #### 18...

Global site tag (gtag.js) - Google Analytics