oracle自定义类型:Java处理Oracle中的用户自定义类型来源: 发布时间:星期四, 2009年2月12日 浏览:50次 评论:0
Java对于PL/SQL中package下定义类型并不支持(找不到抛出invalid name pattern异常信息)需要定义schema级类型 OracleAPI: http://www.rakeshv.org/docs/oracle/jdbc3.0/index.html 代码如下: Schema Level Type: create or replace type Guy as object ( name varchar2(50), age number ) create or replace type GUYS as Table of GUY PL/SQL: create or replace package ArrayNesta is PROCEDURE insert_guys( guys_in IN guys ); end ArrayNesta; create or replace package body ArrayNesta is PROCEDURE insert_guys( guys_in IN guys ) IS BEGIN for i in guys_in.first .. guys_in.last LOOP insert o ASSOCIATEARRAYNESTA(name, age) values(guys_in(i).name, guys_in(i).age); END LOOP; END insert_guys; end ArrayNesta; Database Table: create table ASSOCIATEARRAYNESTA( name varchar2(50), age number ) Java: /** * */ package .gif' />; import java.sql.CallableStatement; import java.sql.Connection; import java.util.HashMap; import java.util.Map; import oracle.jdbc.pool.OracleDataSource; import oracle.sql.ARRAY; import oracle.sql.ArrayDescriptor; import oracle.sql.STRUCT; import oracle.sql.StructDescriptor; /** * @author nfeng * */ public ArrayTest { /** * @param args */ public void (String args) throws Exception { OracleDataSource ods = OracleDataSource; ods.URL("jdbc:oracle:thin:username/password@host:port:database"); Connection conn = ods.getConnection; .out.prln(conn); StructDescriptor sd = StructDescriptor.createDescriptor("GUY", conn); Object nesta = Object {"nesta", 29}; STRUCT snesta = STRUCT(sd, conn, nesta); Object kisey = Object {"kisey", 30}; STRUCT skisey = STRUCT(sd, conn, kisey); ArrayDescriptor ad = ArrayDescriptor.createDescriptor("GUYS", conn); ARRAY guysin = ARRAY(ad, conn, STRUCT {snesta, skisey}); CallableStatement cs = conn.prepareCall("{ call ArrayNesta.insert_guys(?) }"); cs.Array(1, guysin); cs.execute; conn.close; } } 0
相关文章读者评论发表评论 |