【转】在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值