--分页查询
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();
}
}
}
}
分享到:
相关推荐
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括触发器、过程、函数、软件包、异常处理、游标、循环、分支、变量使用、数据库安装等关键知识点。 触发器是数据库中用来保证数据...
Oracle PL/SQL是一种在Oracle数据库环境中使用的编程语言,它结合了SQL(结构化查询语言)的查询能力与过程式编程语言的功能。此培训课件旨在帮助开发人员掌握Oracle数据库的开发技能,特别是针对那些已经有SQL基础...
Oracle的PL/SQL编程在处理大量数据时,经常会用到分页查询,这不仅可以提高查询效率,还能有效地减少网络传输的数据量,提升用户体验。在本PPT中,我们将深入探讨Oracle PL/SQL实现分页查询的策略和技术。 一、什么...
### PL/SQL 7.0中文使用说明 #### 一、概述 《PL/SQL Developer 7.0中文使用说明书》是一份详尽的技术文档,旨在帮助用户从安装配置到实际应用全面掌握PL/SQL Developer这款强大的Oracle客户端工具。本文档不仅...
PL/SQL是Oracle数据库系统中的一个核心组件,全称为Procedural Language/Structured Query Language,即过程化结构查询语言。它是SQL的扩展,为数据库管理提供了更强大的编程能力,允许开发者编写存储过程、函数、...
### PL/SQL Developer知识点概述 #### 一、简介 **PL/SQL Developer**是一款专为Oracle数据库设计的集成开发环境(IDE),它极大地简化了PL/SQL语言的应用开发过程。这款软件提供了丰富的功能来帮助开发者高效地...
### Java调用PL/SQL分页过程详解 #### 一、背景介绍 在现代软件开发中,Java 和数据库之间的交互非常频繁。对于大型系统来说,数据处理能力是至关重要的,尤其是在处理大量数据时,如何有效地分页显示这些数据是一...
### Oracle PL/SQL 编程经典入门知识点解析 #### 一、简单程序 在 Oracle PL/SQL 中,简单程序通常指的是基本的 SQL 查询语句,用于检索数据库中的数据。例如,根据特定条件筛选记录。 ##### 示例 - **查询薪资...
### Oracle PL/SQL Recipes知识点概览 #### 一、书籍简介 《Oracle PL/SQL Recipes:一种问题解决方法》是一本由Josh Juneau与Matt Arena合著的专业书籍,旨在为Oracle PL/SQL开发者提供一系列实用的解决方案。本书...
本文实例讲述了Oracle的pl/sql。分享给大家供大家参考,具体如下: 一、pl/sql 是什么 pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展。 pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许...
6. **分页.sql**:在处理大量数据时,分页是常见的需求。这通常涉及到计算OFFSET和FETCH子句,以获取特定范围的记录,使用户能够按页浏览数据。 7. **游标1.sql**:这可能是另一个游标示例,可能展示了更复杂的用法...
2. **模块化设计**:通过PL/SQL,开发者可以创建存储过程,将复杂的业务逻辑封装成独立的模块,如分页、订单处理或转账等,使得代码更易于管理和维护。 3. **减少网络传输**:通过将大量操作集中在服务器端执行,...
在Java开发中,调用Oracle数据库的PL/SQL分页查询通常会使用JDBC(Java Database Connectivity)。以下是一个简单的Java代码片段,展示了如何通过CallableStatement调用上面定义的PL/SQL游标过程: ```java import ...
18. PL/SQL分页:讲解了在PL/SQL中实现数据分页查询的方法。 19. 例外处理:讲述了在PL/SQL程序中如何处理异常情况,以确保程序的健壮性。 20. Oracle的视图:介绍了视图的概念和作用,以及视图与其它数据库系统...
此文以oracle数据库中的SCOTT用户的EMP表为例,用PL/SQL Developer编写一个分页存储过程,要求是:可以输入表名,每页显示记录数,当前页,返回总记录数,总页数和返回的结果集。 由于需要返回查询出来的结果集,...
2. 模块化设计:PL/SQL使得复杂的业务逻辑可以被封装成独立的模块,如分页过程、订单处理过程和转账过程,便于管理和维护。 3. 减少网络传输:将多次SQL操作合并为一次调用,降低了网络通信的开销。 4. 安全性:通过...
PL/SQL分页 - **分页技术**:介绍如何使用ROWNUM等技术实现结果集的分页显示。 #### 17. 例外处理 - **异常处理机制**:理解Oracle中的异常处理机制。 - **自定义异常**:学习如何定义和处理自定义异常。 #### 18...