SHOW:
|
|
- or go back to the newest paste.
1 | Connected to Oracle Database 11g Enterprise Edition Release 11.1.0.7.0 | |
2 | ||
3 | SQL> CREATE OR REPLACE TYPE IDS_QUERY_TYPE AS TABLE OF VARCHAR2(100); | |
4 | 2 / | |
5 | Type created | |
6 | ||
7 | SQL> CREATE OR REPLACE TYPE IDS AS OBJECT ( ids_query IDS_QUERY_TYPE ); | |
8 | 2 / | |
9 | Type created | |
10 | ||
11 | SQL> CREATE OR REPLACE TYPE IDS_TABLE AS TABLE OF IDS; | |
12 | 2 / | |
13 | Type created | |
14 | ||
15 | SQL> CREATE OR REPLACE PROCEDURE getInfo(p_ids IN IDS_TABLE) IS | |
16 | 2 BEGIN | |
17 | 3 FOR i IN 1 .. p_ids.COUNT LOOP | |
18 | 4 FOR j IN 1 .. p_ids(i).ids_query.count LOOP | |
19 | 5 dbms_output.put_line('"' || i || ',' || j || '"=' || p_ids(i).ids_query(j)); | |
20 | 6 END LOOP; | |
21 | 7 END LOOP; | |
22 | 8 END getInfo; | |
23 | 9 / | |
24 | Procedure created | |
25 | ||
26 | SQL> CREATE OR REPLACE | |
27 | 2 AND COMPILE JAVA SOURCE NAMED "ArrayDemo" | |
28 | 3 as | |
29 | 4 import java.io.*; | |
30 | 5 import java.sql.*; | |
31 | 6 import oracle.sql.*; | |
32 | 7 import oracle.jdbc.*; | |
33 | 8 | |
34 | 9 public class ArrayDemo { | |
35 | 10 | |
36 | 11 public static void passArray() throws SQLException { | |
37 | 12 | |
38 | 13 Connection conn = new OracleDriver().defaultConnection(); | |
39 | 14 | |
40 | 15 Array idsQuery1 = ((oracle.jdbc.OracleConnection)conn).createARRAY("IDS_QUERY_TYPE", new String[] {"a","b","c"}); | |
41 | 16 Array idsQuery2 = ((oracle.jdbc.OracleConnection)conn).createARRAY("IDS_QUERY_TYPE", new String[] {"d","e","f"}); | |
42 | 17 | |
43 | 18 StructDescriptor idsDescriptor = | |
44 | 19 StructDescriptor.createDescriptor("IDS",conn); | |
45 | 20 | |
46 | 21 STRUCT ids1 = new STRUCT (idsDescriptor, conn, new Object[] {idsQuery1}); | |
47 | 22 STRUCT ids2 = new STRUCT (idsDescriptor, conn, new Object[] {idsQuery2}); | |
48 | 23 | |
49 | 24 Array arrayToPass = ((oracle.jdbc.OracleConnection)conn).createARRAY("IDS_TABLE", new STRUCT[] {ids1, ids2}); | |
50 | 25 | |
51 | 26 OraclePreparedStatement ps = (OraclePreparedStatement)conn.prepareStatement ( "begin getInfo(:x); end;" ); | |
52 | 27 | |
53 | 28 ps.setArray( 1, arrayToPass ); | |
54 | 29 ps.execute(); | |
55 | 30 | |
56 | 31 } | |
57 | 32 } | |
58 | 33 / | |
59 | Java created | |
60 | ||
61 | SQL> CREATE OR REPLACE | |
62 | 2 PROCEDURE show_java_calling_plsql | |
63 | 3 AS LANGUAGE JAVA | |
64 | 4 NAME 'ArrayDemo.passArray()'; | |
65 | 5 / | |
66 | Procedure created | |
67 | ||
68 | SQL> exec show_java_calling_plsql ; | |
69 | "1,1"=a | |
70 | "1,2"=b | |
71 | "1,3"=c | |
72 | "2,1"=d | |
73 | "2,2"=e | |
74 | "2,3"=f | |
75 | PL/SQL procedure successfully completed |