Java调用Oracle的分页存储过程
来源:互联网 发布:ps制作淘宝店铺首页 编辑:程序博客网 时间:2024/05/16 17:51
1. 使用PL/SQL写分页存储过程
2. 使用Java程序调用该存储过程
01
create
or
replace
procedure
pro(
02
v_in_table_name
in
varchar2,
--表名
03
v_in_page_size
in
number,
--每页大小
04
v_in_page_now
in
number,
--当前页
05
v_out_page_count
out
number,
--页数
06
v_out_row_count
out
number,
--记录数
07
v_out_result_set
out
pkg.page_cursor
--结果集
08
)
is
09
v_sql_stmt varchar2(2000);
10
v_start_index number :=v_in_page_size*(v_in_page_now-1)+1;
--起始位置
11
v_end_index number :=v_in_page_size*v_in_page_now;
--结束位置
12
begin
13
v_sql_stmt:=
'select * from (select t.*, rownum rn from (select * from '
||v_in_table_name||
') t where rownum<='
||v_end_index||
') where rn>='
||v_start_index;
14
open
v_out_result_set
for
v_sql_stmt;
--打开游标
15
v_sql_stmt:=
'select count(*) from '
||v_in_table_name;
16
execute
immediate v_sql_stmt
into
v_out_row_count;
--查询出记录数
17
--计算页数
18
if mod(v_out_row_count,v_in_page_size)=0
then
19
v_out_page_count:=v_out_row_count/v_in_page_size;
20
else
21
v_out_page_count:=v_out_row_count/v_in_page_size+1;
22
end
if;
23
end
;
01
package
com.wujilin.procedure;
02
03
import
java.sql.CallableStatement;
04
import
java.sql.Connection;
05
import
java.sql.DriverManager;
06
import
java.sql.ResultSet;
07
import
java.sql.ResultSetMetaData;
08
09
public
class
ProcedureTest {
10
public
static
void
main(String[] args) {
11
String url =
"jdbc:oracle:thin:@127.0.0.1:1521:orcl"
;
12
String username =
"scott"
;
13
String password =
"tiger"
;
14
String driver =
"oracle.jdbc.driver.OracleDriver"
;
15
16
try
{
17
Class.forName(driver);
18
Connection conn = DriverManager.getConnection(url, username, password);
19
String sql =
"{call pro(?,?,?,?,?,?)}"
;
20
CallableStatement cstmt = conn.prepareCall(sql);
21
// 设置表名
22
cstmt.setString(
1
,
"emp"
);
23
// 设置每一页的记录数
24
cstmt.setInt(
2
,
4
);
25
// 设置当前页
26
cstmt.setInt(
3
,
2
);
27
// 注册总共的页数
28
cstmt.registerOutParameter(
4
, oracle.jdbc.OracleTypes.INTEGER);
29
// 注册总共的记录数
30
cstmt.registerOutParameter(
5
, oracle.jdbc.OracleTypes.INTEGER);
31
// 注册结果集
32
cstmt.registerOutParameter(
6
, oracle.jdbc.OracleTypes.CURSOR);
33
// 直接执行:execute()方法即可。
34
cstmt.execute();
35
// 将游标强制转换成ResultSet类型。
36
ResultSet rs = (ResultSet) cstmt.getObject(
6
);
37
int
pageCount = cstmt.getInt(
4
);
38
System.out.println(
"页数:"
+ pageCount);
39
int
rowCount = cstmt.getInt(
5
);
40
System.out.println(
"记录数:"
+ rowCount);
41
ResultSetMetaData rsmd = rs.getMetaData();
42
while
(rs.next()) {
43
for
(
int
i =
0
; i < rsmd.getColumnCount(); i++) {
44
System.out.print(rsmd.getColumnLabel(i +
1
) +
":"
+ rs.getObject(i +
1
) +
", "
);
45
}
46
System.out.println();
47
}
48
}
catch
(Exception e) {
49
50
}
51
}
52
}
- Java调用Oracle的分页存储过程
- java调用Oracle分页存储过程
- Java调用Oracle分页存储过程
- Java调用Oracle数据库的分页存储过程
- Oracle分页存储过程及java的具体调用方法
- oracle存储过程实现JAVA调用的分页
- java调用oracle数据库的分页存储过程
- oracle实现存储过程的分页并用java代码调用存储过程
- pl/sql 编写 Oracle分页的存储过程 Java调用该过程
- java调用分页存储过程
- oracle存储过程分页以及在java中调用
- java Oracle存储过程分页
- java Oracle存储过程分页
- java Oracle存储过程分页
- Java调用Oracle的存储过程(实例)
- java 调用oracle的存储过程
- java调用oracle存储过程的方法
- java调用oracle的存储过程
- C++ STL 之 lower_bound and upper_bound
- 移植uboot-1.1.6到勤研2440(和精智2440接近,仿照100ask24x0_config配置,重现韦东山的uboot-1.1.6_patch过程)
- 重绘CHeaderCtrl分割线
- java运行期间打印方法调用栈
- 28-线包字
- Java调用Oracle的分页存储过程
- 关于DAMAGE: after Normal block的问题
- 如何学习一门编程语言
- 上传Excel
- USB的FATFS文件系统调试
- JAVA 中的递归
- SQL小结
- 学习编程
- 操作系统笔记《7》-------生产者、消费者问题 。读者、写者问题 程序实现