`
fspwp
  • 浏览: 47771 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

【转】在java中处理oracle中的对象数组(嵌套表)

 
阅读更多

在java中处理oracle中的对象数组(嵌套表):

sp文件:

------------------------------- Create Object Type ----------------------------------
create   or   replace  type o_tmp  as  object (
userid 
varchar2 ( 10 ),
username 
varchar2 ( 20 )
);
/

--------------------------- Create Nested Table Type  On Base Object Type------------------------
create   or   replace  type tmp_array  is   table   of  o_tmp;
/

 ---------------------------- Create a Package File -----------------------------------------------------------
create   or   replace  package body test_object
as
procedure  getObject(obj_arr out tmp_array)
is
tmp_obj o_tmp;
test_arr tmp_array :
=  tmp_array();
number  : =   1 ;
begin

loop
exit   when  n  >   5 ;

tmp_obj :
=  o_tmp( ' test1 '   ||  n,  ' fuyue '   ||  n);

test_arr.extend;
test_arr(n) :
=  tmp_obj;
n :
=  n  +   1 ;

end  loop;

obj_arr :
=  test_arr;

for  n  in  obj_arr.first .. obj_arr.last loop
tmp_obj :
=  obj_arr(n);
dbms_output.put_line(tmp_obj.userid 
||   '  ---  '   ||  tmp_obj.username);
end  loop;

end  getObject;
end  test_object;
/

 

java文件:

import  java.sql.Array;
import  java.sql.CallableStatement;
import  java.sql.DriverManager;
import  java.sql.SQLException;

import  oracle.jdbc.OracleConnection;
import  oracle.jdbc.driver.OracleTypes;
import  oracle.sql.Datum;
import  oracle.sql.STRUCT;

public   class  ObjArray  {
    
private   static  String strDriver  =   " oracle.jdbc.driver.OracleDriver " ;

    
private   static  String strUrl  =   " jdbc:oracle:thin:@192.160.10.14:1521:avex " ;

    
/**
     * 
@param  args
     
*/

    
public   static   void  main(String[] args)  {
        
//  TODO Auto-generated method stub
        test();
    }


    
private   static   void  test()  {
        
try   {
            Class.forName(strDriver);
            OracleConnection con 
=  (OracleConnection) DriverManager
                    .getConnection(strUrl, 
" avex " " avex " );
            CallableStatement stmt 
=   null ;

            stmt 
=  con.prepareCall( " {call test_object.getObject(?)} " );
            stmt.registerOutParameter(
1 , OracleTypes.ARRAY,  " TMP_ARRAY " );

            stmt.execute();

            Array outparam 
=  stmt.getArray( 1 );

            Object[] obj 
=  (Object[]) outparam.getArray();

            
for  ( int  i  =   0 ; i  <  obj.length; i ++ {
                STRUCT struct 
=  (STRUCT) obj[i];
                Datum[] dt 
=  struct.getOracleAttributes();

                
for  ( int  n  =   0 ; n  <  dt.length; n ++ {
                    System.out.println(dt[n]);
                }

            }


        }
  catch  (ClassNotFoundException e)  {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }
  catch  (SQLException e)  {
            
//  TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

 

转自:http://blog.csdn.net/hunterdiary/article/details/1484767

分享到:
评论

相关推荐

    oracle database 10g 完整参考手册part1

    第34章 收集器(嵌套表和可变数组) 第35章 使用大对象 第36章 面向对象的高级概念 第Ⅶ部分 Oracle中的Java 第37章 Java简介 第38章 JDBC程序设计 第39章 Java存储过程 第40章 Oracle真正应用群集 第41章 网格体系...

    oracle database 11g 高清完整中文版part2

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    JAVA上百实例源码以及开源项目

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    Oracle11gPLSQLProgramming

     ·定义和部署varray 、嵌套表和联合数组数据类型;  ·处理外部例程、对象类型、大对象和安全文件;  ·使用DBMS_ALERT 和DBMS_PIPE 在并行会话间通信;  ·通过Oracle Net Services 和PL/SQL 包装器调用外部...

    JAVA上百实例源码以及开源项目源代码

     Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,得到Graphics实例,得到Image实例,填充颜色数组数据,初始化颜色数组。...

    oracle database 11g 完整参考手册中文高清完整版part3

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    Oracle.Database.11g.PL_SQL.Programming

     ·定义和部署varray 、嵌套表和联合数组数据类型;  ·处理外部例程、对象类型、大对象和安全文件;  ·使用DBMS_ALERT 和DBMS_PIPE 在并行会话间通信;  ·通过Oracle Net Services 和PL/SQL 包装器调用外部...

    PLSQL高级编程资料

    1.2.3 删除嵌套表中的条目 1.3 变长数组 1.3.1 定义变长数组 1.3.2 扩展变长数组 1.4 批绑定 1.5 集合的异常处理 第二章 触发器 2.1 触发器的创建 2.2 触发器的管理 2.3 触发器的新功能 2.4 替代触发器 2.5 触发器的...

    疯狂JAVA讲义

    6.2 处理对象 170 6.2.1 打印对象和toString方法 170 6.2.2 ==和equals比较运算符 172 6.3 类成员 175 6.3.1 理解类成员 175 6.3.2 单例(Singleton)类 176 6.4 final修饰符 177 6.4.1 final变量 177 6.4.2...

    JAVA面试题最全集

    方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,因此所有的类都继承了它。子类覆盖 finalize() ...

    oracle database 11g完全参考手册 高清完整版part1 共3部分

     第39章 收集器(嵌套表和可变数组)  第40章 使用大对象  第41章 面向对象的高级概念 第ⅵ部分 oracle 中的java  第42章 java 简介  第43章 jdbc 程序设计  第44章 java 存储过程 第ⅶ部分 指 南  第45章 ...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

    java 面试题 总结

    对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...

    Oracle_Database_11g完全参考手册.part3/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    Oracle_Database_11g完全参考手册.part2/3

    第39章 收集器(嵌套表和可变数组) 第40章 使用大对象 第41章 面向对象的高级概念 第42章 JAVA简介 第43章 JDBC程序设计 第44章 JAVA存储过程 第Ⅶ部分 指南 第45章 Oracle数据字典指南 第46章 应用程序和SQL调整...

    超级有影响力霸气的Java面试题大全文档

     对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。  Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    Access 微软 Access是一种桌面数据库,只适合数据量少的应用,在处理少量 数据和单机访问的数据库时是很好的,效率也很高 小型企业 三、 Oracle数据库概述 ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以...

Global site tag (gtag.js) - Google Analytics