Guest User

arrayDemo4.sql

a guest
Jun 27th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
Add Comment
Please, Sign In to add comment