View difference between Paste ID: 5sFXujRC and M7cHAPUM
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