Oracle数据库中增删集合元素的操作该如何实现呢?其实利用Java Function就可以轻松的实现,本文我们就主要介绍这一实现方法。
源程序如下:
packagezgdx.action;importjava.math.BigDecimal; importjava.sql.Array; //importjava.sql.Connection; importjava.sql.DriverManager; importjava.sql.SQLException; importjava.util.ArrayList; importjava.util.logging.Level; importjava.util.logging.Logger; importoracle.jdbc.*; importoracle.sql.ARRAY; importoracle.sql.ArrayDescriptor;publicclassOraTools{ staticpublicArrayaddElementOfArray(ARRAYary,Objecte){ try{ Object[]bigs=null; if(ary==null)bigs=newObject[0]; elsebigs=(Object[])ary.getArray(); for(inti=0;i<bigs.length;i++) if(e.equals(bigs[i])){returnary;} Object[]objs=newObject[bigs.length+1]; for(inti=0;i<bigs.length;i++)objs[i]=bigs[i]; objs[objs.length-1]=e; OracleConnectionconn=(OracleConnection)DriverManager.getConnection("jdbc:default:connection:"); //((OracleConnection)conn.unwrap(OracleConnection.class)) //Arrayarr=conn.createARRAY(typeName.toUpperCase(),objs);//11gr1 Arrayarr=newARRAY(ArrayDescriptor.createDescriptor(ary.getSQLTypeName(),conn),conn,objs); returnarr; }catch(SQLExceptionex){ //Logger.getLogger(OraTools.class.getName()).log(Level.SEVERE,null,ex); System.err.println("ERROR!addElementOfVarray:"+ex.getMessage()); returnary;}staticpublicArraydelElementOfArray(ARRAYary,Objecte){ try{ if(ary==null)returnnull; Object[]bigs=(Object[])ary.getArray(); ArrayListlist=newArrayList(bigs.length); for(inti=0;i<bigs.length;i++) if(!e.equals(bigs[i])){list.add(bigs[i]);} if(list.size()==bigs.length)returnary; Object[]objs=list.toArray(); OracleConnectionconn=(OracleConnection)DriverManager.getConnection("jdbc:default:connection:"); //Arrayarr=conn.createARRAY(typeName.toUpperCase(),objs);//11gr1 Arrayarr=newARRAY(ArrayDescriptor.createDescriptor(ary.getSQLTypeName(),conn),conn,objs); returnarr; }catch(SQLExceptionex){ System.err.println("ERROR!addElementOfVarray:"+ex.getMessage()); returnary;} }
然后发布:loadjava -f -v -user username/passwd -r OraTools.java
建call spec:
CREATEORREPLACEfunctionaddElementOfInt_nt(aryint_nt,dept_idNUMBER) returnint_ntASLANGUAGEJAVANAME'zgdx.action.OraTools.addElementOfArray(java.sql.Array,java.lang.Object)returnjava.sql.Array';
测试:update test1 set cates = addElementOfInt_nt(cates, 10) where code=1;
关于Oracle数据库中增删集合元素的Java Function的实现方法就介绍到这里了,希望本次的介绍能够对您有所帮助。
【编辑推荐】
- Oracle数据库AWR的使用实例详解Oracle数据库ASH和AWR的简单介绍Oracle数据库通过在线重定义的方法新增字段详解Oracle数据库中AWR的组成及工作原理的详细介绍Oracle数据库Constraint约束的常用操作及异常处理