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

Ambil nilai pengembalian array pl/sql di java

Saya tidak melakukannya dengan ARRAY tapi itu harus bekerja. Pertama Anda harus mendaftar out parameter fungsi Anda. Jadi bisa seperti ini.

private final String PRODECURE_NAME = "{? = call <ProcedureName>(?,?,?)}";

Connection con = null;
CallableStatement cs = null;

       try {
            con = DAOFactory.getDatabaseConnection();
            cs = con.prepareCall(PRODECURE_NAME);
            cs.registerOutParameter(1, java.sql.Types.ARRAY);
            cs.setYourType(2, <yourData>);
            cs.setYourType(3, <yourData>);
            cs.setYourType(4, <yourData>);
            cs.execute();
            Array arr = cs.getArray(1);
            if (arr != null) {
               String[] data = (String[]) arr.getArray();
            }
        } 
        catch (SQLException ex) {
            Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
            try {
                con.rollback();
            }
        }
        finally {
            if (con != null) {
                try {
                    con.close();
                } 
                catch (SQLException ex) {
                    Logger.getLogger(OracleLiekDAO.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }

Coba orang ini dan beri saya jawaban apakah itu berhasil atau tidak.

EDIT:

Karakter ini ? mewakili satu parameter yang akan Anda atur (dinamakan sebagai parametrized). Jadi ini:

cs.setYourType(2, <yourData>);
cs.setYourType(3, <yourData>);
cs.setYourType(4, <yourData>);

artinya, Anda menetapkan tiga parameter Anda (?), parameter metode pertama adalah indeks kolom dan kedua adalah data jenis spesifik Anda.

EDIT 2:

Jadi maaf saya menulis solusi yang buruk, sudah diperbarui jadi periksa kode sekarang dan coba.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MODIFY COLUMN di Oracle - Bagaimana cara memeriksa apakah suatu kolom dapat dibatalkan sebelum disetel ke dapat dibatalkan?

  2. Bagaimana Java untuk OS X 2013-004 mempengaruhi (break) aplikasi Swing?

  3. Pengaturan Oracle per skema default pengguna (tidak mengubah sesi)

  4. Apa yang harus dilakukan jika Anda mendapatkan kesalahan urutan bookmark yang salah saat menggunakan SQL Server dengan Driver ODBC Oracle kami?

  5. Bagaimana menemukan perbedaan nilai format TIMESTAMP b/w di Oracle?