Hallo liebe Gemeinde,
ich habe ein kleines Problem.
Ich möchte untersuchen, wie man PLSQL und JAVA miteinander vermengen kann. Dabei versuche ich mich daran verschiedene Datentypen zwischen Oracle- und Java-Welt auszutauschen.
Ich habe es hinbekommen, einfache Datentypen und Array von einfachen Datentypen auszutauschen. Allerdings haperts im Moment an den komplexen Datentypen.
Mein bisheriges Vorgehen:
1. Anlegen eines Typs in Oracle
2. Anlegen einer Collection in Oracle
3. erstellen einer JAVA-Klasse:
4. Hochladen der Java Routinen mittels loadjava
5. Wrappen der Funktion mittels Funktion in Oracle
Wenn ich meine Funktion in Oracle mit:
aufrufe, dann wird mir (von JAVA?!) gemeldet:
Kann mir jemand von euch helfen?! Gibt es ein Tut, was genau das macht, was ich möchte?! Habe schon öfters Tuts gesehen, die einen komplexen Typ von Oracle an JAVA übergeben. Aber ich brauche den anderen Weg... ;-)
Danke fürs lesen und hoffentlich helfen.
ich habe ein kleines Problem.
Ich möchte untersuchen, wie man PLSQL und JAVA miteinander vermengen kann. Dabei versuche ich mich daran verschiedene Datentypen zwischen Oracle- und Java-Welt auszutauschen.
Ich habe es hinbekommen, einfache Datentypen und Array von einfachen Datentypen auszutauschen. Allerdings haperts im Moment an den komplexen Datentypen.
Mein bisheriges Vorgehen:
1. Anlegen eines Typs in Oracle
Code:
CREATE OR REPLACE TYPE MYSCHEMA.JAVA_TEST_TYPE AS OBJECT (id NUMBER, name varchar2(255) )
Code:
CREATE OR REPLACE TYPE MYSCHEMA.JAVA_TEST_ARR_TYPE AS TABLE OF java_test_type
Code:
public static ARRAY getkomplexArray() throws SQLException { Connection conn = DriverManager .getConnection("jdbc:default:connection:"); ArrayDescriptor arr_Desc = new ArrayDescriptor( "MYSCHEMA.JAVA_ARR_TYPE", conn); JavaTestType[] ret_elems = new JavaTestType[2]; ret_elems[0] = new JavaTestType(1, "Andreas"); ret_elems[1] = new JavaTestType(2, "Michael"); ARRAY ret_arr = new ARRAY(arr_Desc, conn, ret_elems); conn.close(); System.out.println("Hier kommt jetzt der Inhalt des komplexen Arrays"); System.out.println("Array-Größe: " + ret_arr.getLength()); System.out.println("Array-Dump: " + ret_arr.dump()); System.out.println("Hier kam jetzt der Inhalt des komplexen Arrays"); return ret_arr; }
5. Wrappen der Funktion mittels Funktion in Oracle
Code:
CREATE OR REPLACE FUNCTION MYSCHEMA.getkomplexarray RETURN MYSCHEMA.JAVA_TEST_ARR_TYPE AS LANGUAGE JAVA NAME 'objecthandler.getkomplexArray() return oracle.sql.ARRAY'; /
Code:
SELECT * FROM TABLE (MYSCHEMA.getkomplexarray);
ORA-29532: Java-Aufruf durch nicht abgefangene Java-Exception beendet: java.sql.SQLException: Ungültiges Namensmuster: MYSCHEMA.JAVA_ARR_TYPE
Danke fürs lesen und hoffentlich helfen.