sql >> Database >  >> RDS >> Oracle

Hoe TYPE TABLE OF VARCHAR2(5) in Java toe te wijzen?

Ik kon als volgt een typetabel van varchar2 aan Java toewijzen:

  1. Maak een nieuw type buiten elk PLSQL-pakket en verleen de nodige machtigingen.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Maak een PLSQL-functie die de strarray accepteert/retourneert. Dit werd aangegeven in de pakketspecificatie en volledig geschreven in de pakkettekst. Hoewel ik heb aangegeven dat de array IN OUT is, gebruik ik in mijn implementatie alleen de uitvoer van de PLSQL-aanroep.

    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. Roep de procedure op in java. In dit voorbeeld is de variabele conn van het datatype Connection en is deze al geïnitialiseerd. Ik gebruik een jdbc thin client tegen een Oracle-database.

    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. ORA-00942:tabel of weergave bestaat niet voor gemengde tabel en kolommen

  2. Oracle naar PostgreSQL:ANSI outer join-syntaxis in PostgreSQL

  3. Wijs een tinyint toe als boolean hibernate

  4. SQL:cumulatieve kolommen &som over de rij