Oracle
 sql >> Database >  >> RDS >> Oracle

Come mappare la TABELLA DEI TIPO DI VARCHAR2(5) in Java?

Sono stato in grado di mappare una tabella dei tipi di varchar2 su java come segue:

  1. Crea un nuovo tipo al di fuori di qualsiasi pacchetto PLSQL e concedi le autorizzazioni necessarie.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Crea una funzione PLSQL che accetta/restituisce lo strarray. Questo è stato dichiarato nelle specifiche del pacchetto e scritto per intero nel corpo del pacchetto. Sebbene abbia dichiarato che l'array è IN OUT, nella mia implementazione utilizzo effettivamente solo l'output della chiamata PLSQL.

    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. Chiama la procedura in java. In questo esempio la variabile conn è di tipo dati Connection ed è già stata inizializzata. Sto eseguendo un thin client jdbc su un database Oracle.

    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();
    }