Oracle中把Array类型作为参数传入存储过程并用Java对其进行调用的示例是本文我们主要要介绍的内容,接下来我们就开始介绍这一过程。 create or replace procedure test1(arr in varchar_array) is begin/ Y: F: e, w. v! |0 W) B, i
FOR i IN arr.first arr.last LOOP insert into tb values(arr(i));4 r. E( I! M; P3 p' i
END LOOP; end test1;
3 _- P S9 n! a String driver = "oracle.jdbc.driver.OracleDriver";
$ G E& N4 e* b# j# C/ j" s9 h- X* |0 o String strUrl = "jdbc:oracle:thin:@192.168.1.199:1521:orcl";
; E) A$ H/ d9 |/ ^ {+ ~6 @ Statement stmt = null; ResultSet rs = null;1 Z; d5 w' b6 A4 [( y
Connection conn = null; try { Class.forName(driver);% p+ |- W' ], `) A/ r, Q% Q. \
conn = DriverManager.getConnection(strUrl, "user", "pass");
. p+ A" m9 @6 D CallableStatement proc = null;
- Y( n3 |# L0 G t) ]4 p7 N proc = conn.prepareCall("{ call test1(?) }");
0 W P) `* M0 G //调用存储过程test1 //不一样的地方,获得上面创建的自定义的类型,注意大小写
; e1 l2 D! h7 a ArrayDescriptor descriptor = ArrayDescriptor.createDescriptor("VARCHAR_ARRAY", conn);8 q& Y- `. O' v: R6 ^
List list = new ArrayList(); list.add("a");
( w7 P$ r' Y( C! E" Q# w( D list.add("b");中华考试网
7 E [8 F. x) K# V5 F$ j1 U2 |8 ^ //把list中的元素转换成自定义的类型 ARRAY array = new ARRAY(descriptor, conn, list.toArray());
) r7 a* a( ~4 C" [$ Z4 h proc.setArray(1, array); proc.execute();
# m& e3 h1 A- U/ K" ~ catch (Exception ex) { ex.printStackTrace();
) P0 @4 ~7 ?! n) T& N } finally { …… 各种 close …… } |