Oracle
 sql >> база данни >  >> RDS >> Oracle

Как мога да получа изходен параметър на съхранената процедура, който е масив, който да работи?

Не използвайте асоциативен масив - използвайте колекция:

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

След това можете да направите:

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
  }
}

Ако трябва да използвате PL/SQL асоциативен масив като вход за вашата процедура, тогава напишете функция, която взема колекция и извежда асоциативен масив от подходящия тип и след това извикайте това:

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

Забележка:Този отговор предполага използването на драйвера на Oracle в ojdbc6.jar, който изглежда няма OracleConnection.createOracleArray() метод, но да се надяваме, че ще бъде преносим, ​​променяйки oracle.sql.ARRAY към java.sql.Array и използвайки по-новите методи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Изписване с главни букви на имената на дните и месеца при форматиране на дати в Oracle

  2. Хибернация> CLOB> Oracle :(

  3. Cloud Native и DevSecOps в мащаб с Capgemini Agile Innovation Platform и Oracle Cloud

  4. MS Достъп до Oracle лесно преобразуване / миграция

  5. Стъпка по стъпка процес на надстройка за R12.2 надстройка, част -4 (прилагане на пакет за актуализация на версия 12.2.x)