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

Jak uzyskać parametr wyjściowy procedury składowanej, który jest tablicą do pracy?

Nie używaj tablicy asocjacyjnej — użyj kolekcji:

CREATE TYPE StringArray IS TABLE OF VARCHAR2(4000);
CREATE TYPE CLOBArray   IS TABLE OF CLOB;

Następnie możesz zrobić:

public void testString(Connection connection) {
  String[] values = { "alpha", "beta", "gamma" };
  try {
    OracleConnection oc = (OracleConnection) connection;

    ARRAY stringArray = oc.createARRAY( "STRINGARRAY", values ); // Upper case identifier

    OracleCallableStatement st = (OracleCallableStatement) oc.prepareCall(
      "begin test.upper( :in_array, :out_array ); end;"
    );

    st.setARRAYAtName( "in_array", stringArray );
    st.registerOutParameter( "out_array", Types.ARRAY, "STRINGARRAY"); // Upper case again
    st.execute();

    String[] result = (String[])st.getARRAY( 2 ).getArray();

    System.out.println("Length: " + result.length);
    System.out.println("First: " + result[0]);
  } (catch SQLException e) {
    // Handle error
  }
}

Jeśli musisz użyć tablicy asocjacyjnej PL/SQL jako danych wejściowych do swojej procedury, napisz funkcję, która pobiera kolekcję i wyświetla tablicę asocjacyjną odpowiedniego typu, a następnie wywołaj ją:

BEGIN TEST.UPPER( TO_ASSOC_ARRAY( :in_collection ), :out_array ); END;

Uwaga:ta odpowiedź zakłada użycie sterownika Oracle w ojdbc6.jar, który nie wydaje się mieć OracleConnection.createOracleArray() metoda, ale miejmy nadzieję, że będzie przenośny, zmieniając oracle.sql.ARRAY do java.sql.Array i przy użyciu nowszych metod.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Indeksy Oracle i rodzaje indeksów w Oracle z przykładem

  2. wybierz rownum z pensji, gdzie rownum=3;

  3. Jak korzystać z adresu URL tłumaczenia Google w Oracle plsql

  4. 2 sposoby sprawdzenia poziomu zgodności w Oracle (SQLcl i SQL*Plus)

  5. Zrzucanie bloków danych