sql >> Databáze >  >> RDS >> Oracle

Jak mapovat TYPE TABLE OF VARCHAR2(5) v Javě?

Byl jsem schopen namapovat tabulku typů varchar2 na java takto:

  1. Vytvořte nový typ mimo jakýkoli balíček PLSQL a udělte potřebná oprávnění.

     CREATE OR REPLACE TYPE STRARRAY AS TABLE OF VARCHAR2 (100);
     /
     GRANT all ON MYSCHEMA.STRARRAY TO MYUSER1;
     /
     commit;
    
  2. Vytvořte funkci PLSQL, která přijímá/vrací straray. To bylo deklarováno ve specifikaci balíčku a plně napsáno v těle balíčku. Přestože jsem pole deklaroval jako IN OUT, v mé implementaci ve skutečnosti používám pouze výstup z volání 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. Zavolejte proceduru v Javě. V tomto příkladu je proměnná conn datového typu Connection a již byla inicializována. Používám tenkého klienta jdbc proti databázi 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. Chyba Postgres na insertu - CHYBA:neplatná sekvence bajtů pro kódování UTF8:0x00

  2. Jaký je ekvivalent ST_DWithin (PostGIS - PostgreSQL) pro MySQL?

  3. Jak funguje funkce SPACE() na serveru SQL Server (T-SQL)

  4. Dotaz typu Rails typu dat Postgres JSON