易截截图软件、单文件、免安装、纯绿色、仅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 动态语句

 在一般的PL/SQL程序开发中,可以使用SQL的DML语句和事务控制语句,但是DDL语句及会话语句却不能在PL/SQL中直接使用,要想实现在PL/SQL中使用DDL语句及会话控制语句,可以通过动态SQL来实现。
       所谓动态SQL是指在PL/SQL块编译时SQL语句是不确定的,例如根据用户输入参数的不同而 ......

Oracle的 简单行转列

应个报表要求做个
时间             双色球,  胜负彩。。。。。
200905     销量       销量
200906     销量       销量
200907   &n ......

[Oracle] 重新分析表使数据库自动压缩表。

oracle11g具有自动的表压缩功能, 但当insert语句未指定具体的列名时, 会使用自动表压缩功能失效。(如该语句会使得表t_test不能自动压缩: insert into t_test select * from t_test2)
另外使用一些外部工具进行数据装载(sqlload),也有可能使得表不能自动压缩,此时需要用以下语句,以重新分析表,分析完成之后,该表即会 ......

ORACLE中查看SQL执行计划的方法

 1.首先需要建立plan table,否则不能使用
建立方法:
$oracle\rdbms\admin下有个
utlxplan.sql
其内容为:
create table PLAN_TABLE (
 statement_id  varchar2(30),
 timestamp     date,
 remarks       varchar2(80),
 operat ......

如何将TXT,EXCEL或CSV数据导入ORACLE到对应表中

 方法一,使用SQL*Loader  
  这个是用的较多的方法,前提必须oracle数据中目的表已经存在。  
  大体步骤如下:  
  1   将excle文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的control. ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号