Announcement

Collapse
No announcement yet.

Komplexe Datentypen von Java empfangen...

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Komplexe Datentypen von Java empfangen...

    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
    Code:
     CREATE OR REPLACE
    TYPE MYSCHEMA.JAVA_TEST_TYPE AS OBJECT (id NUMBER, name varchar2(255) )
    2. Anlegen einer Collection in Oracle
    Code:
    CREATE OR REPLACE TYPE MYSCHEMA.JAVA_TEST_ARR_TYPE AS TABLE OF java_test_type
    3. erstellen einer JAVA-Klasse:
    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;
    	}
    4. Hochladen der Java Routinen mittels loadjava

    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';
    /
    Wenn ich meine Funktion in Oracle mit:
    Code:
    SELECT   * FROM TABLE (MYSCHEMA.getkomplexarray);
    aufrufe, dann wird mir (von JAVA?!) gemeldet:

    ORA-29532: Java-Aufruf durch nicht abgefangene Java-Exception beendet: java.sql.SQLException: Ungültiges Namensmuster: MYSCHEMA.JAVA_ARR_TYPE
    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.
Working...
X