`
fspwp
  • 浏览: 48812 次
  • 性别: 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

分享到:
评论

相关推荐

    MLDN魔乐科技JAVA培训_Oracle课堂24_嵌套表、可变数组.rar

    本课程"MLDN魔乐科技JAVA培训_Oracle课堂24_嵌套表、可变数组"着重讲解了Oracle数据库中的两种特殊数据结构——嵌套表和可变数组,它们在处理复杂数据时非常有用。 嵌套表,也称为集合类型,允许在一个列中存储多个...

    基于Java-JDBC访问Oracle9i对象关系数据库的一种实现方法.pdf

    Oracle9i数据库在传统的关系模型基础上扩展了对象关系特性,支持用户自定义类型(UDT),包括对象类型(记录类型)、数组类型和嵌套表类型。这使得数据库能够存储复杂的数据结构,如对象实例和变长属性。对象模型...

    Oracle面向对象特征新进展.pdf

    集合类型是描述一对多关系的有效工具,Oracle支持变长数组(VARRAY)和嵌套表两种集合类型。VARRAY有固定的元素数量,而嵌套表的元素数量不受限制。在Oracle 9i中,这两种类型可以进一步嵌套,增强了灵活性。 对象...

    Oracle定义联合数组及使用技巧

    Oracle中的联合数组,也称作PL/SQL表,是一种特殊的数据结构,仅能在PL/SQL环境中使用,不能直接用于数据库表。联合数组不需要初始化,没有特定的构造函数语法,因此在赋值前无需预分配存储空间,也无需使用EXTEND...

    面向对象数据库的概述及Oracle的实现.pdf

    插入语句创建了一个新的员工对象并将其存储在表中。 综上所述,面向对象数据库提供了一种更为灵活和强大的数据管理方式,而Oracle数据库通过其OR模型,使得在关系数据库环境中也能实现面向对象编程的优势。这使得...

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

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

    面向对象与java程序设计实验内容.doc

    【面向对象与Java程序设计实验内容...通过这些实验,学生可以逐步掌握面向对象编程的基本概念,以及在Java中如何实现这些概念。同时,这些实验也锻炼了问题解决和逻辑思维能力,为后续更复杂的程序设计打下坚实的基础。

    oracle database 10g 完整参考手册part1

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

    Oracle11gPLSQLProgramming

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

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

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

    PLSQL高级编程

    本书可能介绍了如何在Oracle中装载、应用和删除JAVA对象,以及Oracle和JAVA的集成。 以上知识点为从文件内容中提取的PLSQL高级编程的详细说明,涵盖了从基础集合的使用到高级编程技术如动态SQL、调试、大对象处理...

    ORACLE到DB2应用移植方法探讨.pdf

    Oracle 特色的数据和功能 (ROWID,ROWNumber,%TYPE,%ROWTYPE) 以及集合类型 (联合数组,嵌套表,varrays) DB2 不支持。 四、移植方法探讨 方法 1:对 ORACLE 和 DB2 中各应用对象进行分析,找出对照的规则,设计...

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

     第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 包装器调用外部...

    oracle9i中文版基础培训教程7收集.pdf

    8. 表类型(嵌套表类型):在表定义中包含的嵌套表,允许在表中存储结构化的集合数据。 7.3 PL/SQL编程方案对象 1. 过程:一组SQL和PL/SQL语句的集合,用于完成特定任务,类似高级语言的函数或子程序。 2. 函数:...

    Oracle 9i中文版基础培训教程07

    7. **表类型**(嵌套表类型):在表定义中嵌入表格结构,允许更灵活的数据组织。 PL/SQL编程方案对象涉及Oracle的内置编程语言PL/SQL,包括: 1. **过程**:一组SQL和PL/SQL语句组成的可执行单元,用于完成特定...

    疯狂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上百实例源码以及开源项目源代码

    Java波浪文字制作方法及源代码 1个目标文件 摘要:Java源码,初学实例,波浪文字 Java波浪文字,一个利用Java处理字符的实例,可以设置运动方向参数,显示文本的字符数组,高速文本颜色,显示字体的 FontMetrics对象,...

    java程序,书上的课后题,里面有题目和程序

    文件中提到的关于数据库的操作,如查询功能的实现、从数据库表中查询信息、向成绩表中插入学生成绩等,需要掌握JDBC的使用方法,了解如何连接数据库、执行SQL语句以及处理结果集。 ### 多线程编程与异常处理 多...

Global site tag (gtag.js) - Google Analytics