jdbc调用oracle function返回结果集
申明oracle函数,及其结果集结构
结果集必须为全局的、table of 不能用index by
CREATE OR REPLACE TYPE EMPARRAY is object (corporationId number);
CREATE OR REPLACE TYPE EMPARRAY2 is table of EMPARRAY;
create or replace function func_empl return sys_refcursor is
Result sys_refcursor;
list emparray2 := emparray2();
item emparray ;
begin
select 1 into item.corporationId from dual;
list.extend;
list(list.count) := item;
item.corporationId := 2;
list.extend;
list(list.count) := item;
item.corporationId := 3;
list.extend;
list(list.count) := item;
OPEN Result FOR
SELECT * from TABLE(cast(list as emparray2));
return(Result);
end func_empl;
获取返回游标。
public void callFuncQuery(String sql, RowCallbackHandler rch,
String returnType) throws DataAccessObjectException {
Connection con = null;
CallableStatement cstmt = null;
ResultSet rs = null;
logger.info(sql);
try {
con = getDataSource().getConnection();
cstmt = con.prepareCall(sql);
//适用于数组
//cstmt.registerOutParameter(1, OracleTypes.ARRAY, returnType);
//cstmt.registerOutParameter(1, OracleTypes.STRUCT, returnType);
//适用于游标
cstmt.registerOutParameter(1, OracleTypes.CURSOR);
cstmt.executeUpdate();
/*Array out=cstmt.;
System.out.println("Array is of type "
+ out.getBaseTypeName());
System.out.println("Array element is of type code "
+ out.getBaseType());*/
rs = (ResultSet)cstmt.getObject(1);
while (rs.next()) {
rch.processRow(rs);
}
} catch (SQLException e) {
throw new DataAccessObjectException(e);
} finally {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (cstmt != null) {
cstmt.close();
cstmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException e) {
throw new DataAccessObjectException(e);
}
}
相关文档:
oracle表空间操作详解
1
2
3作者: 来源: 更新日期:2006-01-04
5
6
7建立表空间
8
9CREATE TABLESPACE data01
10DATAFILE '/ora ......
一、ORACLE的启动和关闭
1、在单机环境下
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下
su - oracle
a、启动ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVRMGR>startup
SVRMGR>quit
b、关闭ORACLE系统
oracle>svrmgrl
SVRMGR>connect internal
SVR ......
案例说明:
有A,B两台oracle数据库,都为10g,现在有一个A数据库中one表的几条数据要插入到B数据库中的one表?
在网上查阅了一下,可以通过在A上建立dblink,当然在B机上建立也是一样的。
打开sqlplus终端,或者任意的oracle客户端环境,执行以下SQL
create database link 链接名
connect t ......
for example:
15:18:59 SQL> create table t1 (a int, b int);
表已创建。
已用时间: 00: 00: 00.15
......
最近有一任务,需要使用Oracle数据库,以前对此不太熟悉,就从网上查找资料,(说实在的网络真是太好了,也多亏了许多的热心的技术人员,愿意把自己的经验和心得与大家分享)并转贴了一个帖子参考,不过此帖子有些地方没有说清楚,确实让我费了好大劲,才测试成功。下面我把我的步骤说明一下:(环境:Windows XP sp2 + vs ......