Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak zmapować TABELĘ TYPÓW VARCHAR2(5) w javie?

Udało mi się zmapować tabelę typów varchar2 na java w następujący sposób:

  1. Utwórz nowy typ poza dowolnym pakietem PLSQL i przyznaj niezbędne uprawnienia.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Utwórz funkcję PLSQL, która akceptuje/zwraca strarray. Zostało to zadeklarowane w specyfikacji pakietu i zapisane w całości w treści pakietu. Chociaż zadeklarowałem tablicę jako IN OUT, w mojej implementacji faktycznie używam tylko danych wyjściowych z wywołania 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. Wywołaj procedurę w javie. W tym przykładzie zmienna conn ma typ danych Connection i została już zainicjowana. Używam cienkiego klienta jdbc z bazą danych 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();
    }
    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tworzenie tablicy asocjacyjnej na poziomie pakietu w java

  2. JBoss automatycznie łączy się ponownie z bazą danych po ponownym uruchomieniu/rozłączaniu bazy danych

  3. ORA-04084:nie można zmienić NOWYCH wartości dla tego typu wyzwalacza

  4. Problemy z konkatenacją

  5. Oracle DataReader zwraca 1 wiersz, ale metoda Read zwraca wartość false