Guest User

Untitled

a guest
Jul 17th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.81 KB | None | 0 0
  1. SQL> CREATE TYPE t_type AS OBJECT (val VARCHAR(4));
  2. 2 /
  3. Type created
  4.  
  5. SQL> CREATE TYPE t_table AS TABLE OF t_type;
  6. 2 /
  7. Type created
  8.  
  9. SQL> CREATE OR REPLACE PROCEDURE p_sql_type (p_out OUT t_table) IS
  10. 2 BEGIN
  11. 3 p_out := t_table(t_type('a'), t_type('b'));
  12. 4 END;
  13. 5 /
  14. Procedure created
  15.  
  16. SQL> CREATE OR REPLACE
  17. 2 AND COMPILE JAVA SOURCE NAMED "ArrayDemo"
  18. 3 as
  19. 4 import java.sql.*;
  20. 5 import oracle.sql.*;
  21. 6 import oracle.jdbc.driver.*;
  22. 7
  23. 8 public class ArrayDemo {
  24. 9
  25. 10 private static void log(String s) throws SQLException {
  26. 11 PreparedStatement ps =
  27. 12 new OracleDriver().defaultConnection().prepareStatement
  28. 13 ( "begin dbms_output.put_line(:x); end;" );
  29. 14 ps.setString(1, s);
  30. 15 ps.execute();
  31. 16 ps.close();
  32. 17 }
  33. 18
  34. 19 public static void getArray() throws SQLException {
  35. 20
  36. 21 Connection conn = new OracleDriver().defaultConnection();
  37. 22
  38. 23 OracleCallableStatement cs =
  39. 24 (OracleCallableStatement)conn.prepareCall
  40. 25 ( "begin p_sql_type(?); end;" );
  41. 26 cs.registerOutParameter(1, OracleTypes.ARRAY, "T_TABLE");
  42. 27 cs.execute();
  43. 28 ARRAY array_to_pass = cs.getARRAY(1);
  44. 29
  45. 30 /*showing content*/
  46. 31 Datum[] elements = array_to_pass.getOracleArray();
  47. 32
  48. 33 for (int i=0;i<elements.length;i++){
  49. 34 Object[] element = ((STRUCT) elements[i]).getAttributes();
  50. 35 String value = (String)element[0];
  51. 36 log("array(" + i + ").val=" + value);
  52. 37 }
  53. 38 }
  54. 39 }
  55. 40 /
  56. Java created
  57.  
  58. SQL> CREATE OR REPLACE
  59. 2 PROCEDURE show_java_calling_plsql
  60. 3 AS LANGUAGE JAVA
  61. 4 NAME 'ArrayDemo.getArray()';
  62. 5 /
  63.  
  64. Procedure created
  65.  
  66. SQL> EXEC show_java_calling_plsql;
  67.  
  68. array(0).val=a
  69. array(1).val=b
Add Comment
Please, Sign In to add comment