Oracle实践--PL/SQL综合之分页存储过程
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实践--PL/SQL综合之分页存储过程的更多相关文章
- 使用oracle 的 PL/Sql 定时执行一个存储过程
CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...
- Oracle实践--PL/SQL表分区的基础
PL/SQL基础入门之表分区 PL/SQL:过程语言(Procedure Language)和结构化语言(Structured Query Language)结合而成的编程语言.是对SQL的扩展.支 ...
- C#(在WeBAPI)获取Oracle(在PL/SQL)游标类型的存储过程(用到了RefCursor)
需求:WebAPI服务端,通过Oracle数据库的存储过程,获取数据. 在PL/SQL 建立存储过程:(先来最简单的,就是把整个表都查出来) create or replace procedure S ...
- Oracle中PL/SQL简介、基本语法以及数据类型
Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...
- Oracle之PL/SQL编程
PL/SQL(Procedural Language/SQL,过程语言/SQL) 是结合了Oracel过程语言和结构化查询语言(SQL)的一种扩展语言. 优点: (1)PL/SQL具有编程语言的特点, ...
- Oracle中PL/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
- Sql Server通用分页存储过程
Sql Server2005通用分页存储过程 CREATE PROCEDURE [dbo].[Common_GetPagedList] ( @TableName nvarchar(100), --表名 ...
- Oracle 数据库基础学习 (八) PL/SQL综合练习
1.定义游标:列出每个员工的姓名.部门名称并编程显示第10个到第20个记录. declare cursor zemp_cursor is (select temp.ename, temp.dname ...
- Oracle 的PL/SQL语言使用
--PL/SQL语言(procedure language 过程化语言) --1.声明类型 declare k number; m ; --Character String buffer too sm ...
随机推荐
- ArcGIS Spatial Query
Creates a spatial query which performs a spatial search for features in the supplied feature class a ...
- 交换排序(java)
package exchange_sort; import java.util.Random; /*各类交换排序 * ------数据存储范围1~s.length-1 ------ *主要包含 ...
- NET使用ABP框架搭建项目
NET使用ABP框架搭建博客项目(一) 有很多学NET开发的小伙伴建项目都比较茫然,我用什么开发?我都使用什么框架?我怎么起名字?种种问题,让一些低等.中等的工程师(甚至是高级工程师)很烦躁. 推荐一 ...
- 在Android实现client授权
OAuth对你的数据和服务正在变成实际上的同意訪问协议在没有分享用户password. 实际上全部的有名公司像Twitter.Google,Yahoo或者LinkedIn已经实现了它.在全部流行的程序 ...
- 小强的HTML5移动开发之路(43)——JqueryMobile页眉、工具栏和标签栏导航
一.页眉 1.添加页眉和页脚 <div data-role="header"> <h1>第 1 页</h1> </div> < ...
- 王立平--TableLayout
效果: <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android= ...
- 一小时内破解16位强password
password能够用来保护你的金融交易.你的社交网络站点,和其它貌似安全的在线站点的主机.人们常常说:"不要把字典里的单词用来做password.它们超级不安全". 但是,要是黑 ...
- Jquery前端分页插件pagination使用
插件描述:JqueryPagination是一个轻量级的jquery分页插件.只需几个简单的配置就可以生成分页控件.并且支持ajax获取数据,自定义请求参数,提供多种方法,事件和回调函数,功能全面的分 ...
- 【u203】文件夹计数
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 可以用路径来描述文件夹,路径为一个包含若干部分的字符串,之间用'/'分隔.每部分均为一个文件夹的名称, ...
- java取奇偶数的基本练习
public class JiOu { public static void main(String[] args) { int a = 11; System.out.println("这个 ...