Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara mendapatkan parameter output prosedur tersimpan yang merupakan array agar berfungsi?

Jangan gunakan Array Asosiatif - gunakan Koleksi:

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

Kemudian Anda dapat melakukan:

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

Jika Anda harus menggunakan larik asosiatif PL/SQL sebagai input ke prosedur Anda, tulislah fungsi yang mengambil kumpulan dan mengeluarkan larik asosiatif dengan tipe yang sesuai, lalu panggil itu:

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

Catatan:Jawaban ini mengasumsikan menggunakan driver Oracle di ojdbc6.jar yang tampaknya tidak memiliki OracleConnection.createOracleArray() metode tetapi, mudah-mudahan, akan mengubah oracle.sql.ARRAY portable ke java.sql.Array dan menggunakan metode yang lebih baru.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menentukan apakah Field Data di Oracle bertipe Number

  2. ORA-01097

  3. Hubungkan OEM Anda ke Grafana menggunakan Aplikasi Manajer Perusahaan untuk Grafana

  4. Bagaimana cara mengakses struktur dan mendapatkan daftar kolom, tipe data refcursor?

  5. Permintaan parameter dalam masalah Oracle