Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie ordnet man TYPE TABLE OF VARCHAR2(5) in Java zu?

Ich konnte eine Typtabelle von varchar2 wie folgt auf Java abbilden:

  1. Erstellen Sie einen neuen Typ außerhalb eines beliebigen PLSQL-Pakets und erteilen Sie die erforderlichen Berechtigungen.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Erstellen Sie eine PLSQL-Funktion, die das Straarray akzeptiert/zurückgibt. Dies wurde in der Paketspezifikation deklariert und vollständig in den Paketkörper geschrieben. Obwohl ich das Array als IN OUT deklariert habe, verwende ich in meiner Implementierung tatsächlich nur die Ausgabe des PLSQL-Aufrufs.

    PROCEDURE getArr(arr_var IN OUT strarray) IS
      counter NUMBER := 1;
    BEGIN
      arr_var := new strarray();
      WHILE counter <= 10 LOOP
        arr_var.extend();
        arr_var(counter) := 'my data string';
      END LOOP;
    END getArr;
    
  3. Rufen Sie die Prozedur in Java auf. In diesem Beispiel ist die Variable conn vom Datentyp Connection und wurde bereits initialisiert. Ich verwende einen jdbc Thin Client für eine Oracle-Datenbank.

    CallableStatement proc = null;
    String sql = "{ call myPackage.getArr(?) }";
    try{
      proc = conn.prepareCall(sql);
      proc.registerOutParameter(1, OracleTypes.Array, "MYSCHEMA.STRARRAY");
      proc.execute();
      Array arrOut = proc.getArray(1);
      for (int num=0; num<10; num++){
         System.out.println(arrOut[num]);
    }finally{
      proc.close();
    }