易截截图软件、单文件、免安装、纯绿色、仅160KB

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 表空间操作

oracle表空间操作详解
  1
  2
  3作者:   来源:    更新日期:2006-01-04 
  5
  6 
  7建立表空间
  8
  9CREATE TABLESPACE data01
 10DATAFILE '/ora ......

ORACLE常用命令

一、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 ......

两台oracle数据库相互导数据

案例说明:
    有A,B两台oracle数据库,都为10g,现在有一个A数据库中one表的几条数据要插入到B数据库中的one表?
在网上查阅了一下,可以通过在A上建立dblink,当然在B机上建立也是一样的。
打开sqlplus终端,或者任意的oracle客户端环境,执行以下SQL
create database link 链接名 
 connect t ......

Oracle中分组查询时keep的使用[转][最简][易懂]

for   example:  
   
  15:18:59   SQL>   create   table   t1   (a   int,   b   int);  
   
  表已创建。  
   
  已用时间:     00:   00:   00.15  
  ......

不安装Oracle客户端远程连接Orcale数据库

最近有一任务,需要使用Oracle数据库,以前对此不太熟悉,就从网上查找资料,(说实在的网络真是太好了,也多亏了许多的热心的技术人员,愿意把自己的经验和心得与大家分享)并转贴了一个帖子参考,不过此帖子有些地方没有说清楚,确实让我费了好大劲,才测试成功。下面我把我的步骤说明一下:(环境:Windows XP sp2 + vs ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号