挠痒痒的专栏
彪悍的人生不需要解释
登录
注册
全站
当前博客
空间
博客
好友
相册
留言
用户操作
[即时聊天]
[发私信]
[加为好友]
蔡晖
ID:chnic
共
1154
次访问,排名
2万外
好友
3
人,关注者
7
人
彪悍的人生不需要解释
chnic的文章
原创 8 篇
翻译 0 篇
转载 0 篇
评论 3 篇
挠痒痒的公告
写Blog主要为了沉淀一下自己的所学。这里的博文都是从我的另一博客copy来的。http://chnic.javaeye.com
最近评论
chnic:
不好意思,源代码blog上面都有的。
你可以自己copy. 我基本上是在一份源代码上做的所有东西。
wsdd 还有一些相关文件早就改的面目全非了。
你照着我的步骤一步一步来 不会出错的。
singlesword2007:
写的不错!深入而且易懂,期待下一篇!
allisgone:
可以发一个完整的例子给我吗?发到邮箱里,谢了
文章分类
AJAX&JS
(RSS)
Application Server
(RSS)
Java
(RSS)
Webservice
(RSS)
收藏
相册
存档
2008年04月(2)
2008年03月(6)
订阅我的博客
Oracle返回结果集用JDBC读取
收藏
新一篇: 在Tomcat5.0.28 和5.5.15 配置JNDI数据源
|
旧一篇: 利用AXIS开发Webservice(三) —— 如何传递JavaBean和你的对象
废话不多说 进入正题: Oracle返回结果集然后用JDBC调用。
方法有两种,以Oracle scott用户下的DEPT表为例。
Step.1 程序包
create
or
replace
package Test_cursor
as
type my_cursor
is
ref
cursor
;
procedure
my_procedure(para out my_cursor);
end
Test_cursor;
create
or
replace
package body Test_cursor
as
procedure
my_procedure(para out my_cursor)
is
begin
open
para
for
select
d.deptno, d.dname
from
dept d;
end
my_procedure;
end
Test_cursor;
Step.2 程序包+存储过程
create
or
replace
package types
as
type cursorType
is
ref
cursor
;
end
;
create
or
replace
procedure
getemps(p_cursor out types.cursorType)
as
begin
open
p_cursor
for
select
d.deptno, d.dname
from
dept d;
end
;
以此类推,用程序包+函数同样可以。
下面是测试类:
package
com.chnic.procedure;
import
java.sql.CallableStatement;
import
java.sql.Connection;
import
java.sql.DriverManager;
import
java.sql.ResultSet;
import
java.sql.SQLException;
import
oracle.jdbc.driver.OracleTypes;
public
class
TestProcedure
...
{
private
String path
=
"
jdbc:oracle:thin:@localhost:1521:Oracle
"
;
private
String user
=
"
Scott
"
;
private
String password
=
"
tiger
"
;
private
Connection conn;
public
TestProcedure()
...
{
try
...
{
Class.forName(
"
oracle.jdbc.driver.OracleDriver
"
);
conn
=
DriverManager.getConnection(path, user, password);
}
catch
(ClassNotFoundException e)
...
{
e.printStackTrace();
}
catch
(SQLException e)
...
{
e.printStackTrace();
}
}
public
void
readFromProcedure()
...
{
try
...
{
//
CallableStatement call = conn.prepareCall("call getemps(?)");
//
测试方法 1
CallableStatement call
=
conn.prepareCall(
"
call TEST_CURSOR.MY_PROCEDURE(?)
"
);
//
测试方法2
call.registerOutParameter(
1
, OracleTypes.CURSOR);
call.execute();
ResultSet rs
=
(ResultSet)call.getObject(
1
);
while
(rs.next())
...
{
System.out.println(rs.getString(
1
)
+
"
---
"
+
rs.getString(
2
));
}
this
.releaseConnection(conn);
}
catch
(SQLException e)
...
{
e.printStackTrace();
}
}
public
void
releaseConnection(Connection conn)
...
{
try
...
{
conn.close();
}
catch
(SQLException e)
...
{
e.printStackTrace();
}
}
public
static
void
main(String[] args)
...
{
TestProcedure tp
=
new
TestProcedure();
tp.readFromProcedure();
}
}
发表于 @
2008年03月14日 00:25:00
|
评论(
loading...
)
|
编辑
新一篇: 在Tomcat5.0.28 和5.5.15 配置JNDI数据源
|
旧一篇: 利用AXIS开发Webservice(三) —— 如何传递JavaBean和你的对象
评论:没有评论。
发表评论
姓 名:
主 页:
校验码:
看不清,换一张
当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击
登录