sql >> Databasteknik >  >> RDS >> Oracle

Hur mappar man TYPE TABELL FÖR VARCHAR2(5) i java?

Jag kunde mappa en typtabell för varchar2 till java enligt följande:

  1. Skapa en ny typ utanför alla PLSQL-paket och ge nödvändiga behörigheter.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Skapa en PLSQL-funktion som accepterar/returerar strarrayen. Detta deklarerades i paketspecifikationen och skrevs i sin helhet i paketets kropp. Även om jag förklarade att arrayen var IN OUT, använder jag i min implementering bara utdata från PLSQL-anropet.

    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. Ring proceduren i java. I det här exemplet är variabeln conn av datatypen Connection och har redan initierats. Jag kör en jdbc tunn klient mot en Oracle-databas.

    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. Hur man kör sql-skript från en pl sql-procedur

  2. Motsvarar funktionerna PostgreSQL array() / array_to_string() i Oracle 9i

  3. postgresql motsvarande $mysqli->insert_id

  4. Kriterier för viloläge för datum