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

Mendapatkan kesalahan saat menjalankan Stroredprocedure

Seperti yang dikatakan Nicholas Karasnov, Anda memerlukan argumen dalam panggilan agar sesuai dengan deklarasi prosedur. Dalam hal ini Anda memiliki OUT parameter, jadi Anda memerlukan suatu tempat untuk data yang Anda pilih - sesuatu yang sesuai dengan sys_refcursor jenis parameter.

Jika Anda menggunakan SQL*Plus untuk mengujinya, Anda dapat mendeklarasikan Variabel SQL*Plus untuk ini dan kemudian berikan itu sebagai variabel pengikat, lalu gunakan print perintah untuk menampilkan isi kursor:

variable rc refcursor
exec javao(1, :rc);
print rc

Ini bekerja di SQL Developer juga. Saat Anda memanggil prosedur dari kode lain, Anda akan memiliki variabel yang dideklarasikan dalam blok PL/SQL, atau dalam aplikasi eksternal (mis. melalui jdbc ), tetapi detailnya bergantung pada apa yang Anda lakukan.

Untuk menelepon dari Java, lakukan sesuatu seperti:

// get connection
CallableStatement cStmt = conn.prepareCall("{ call javao(?, ?) }");
cStmt.setInt(1, 1);
cStmt.registerOutParameter(2, OracleTypes.cursor);
cStmt.execute();
ResultSet rSet = ((OracleCallableStatement) cStmt).getCursor(2);
while (rSet.next())
{
    // get columns from result set row and do something with the data
}

tapi itu berbatasan dengan pseudocode, dan Anda harus membaca dokumentasi untuk mengisi bagian yang kosong (dan memperbaiki kesalahan apa pun; Anda mungkin memerlukan jenis pernyataan khusus Oracle misalnya), dan menambahkan penutupan objek dan penanganan kesalahan semua barang bagus lainnya.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan URL terjemahan google di Oracle plsql

  2. bagaimana cara memanggil satu proc yang disimpan dari anther dan memodifikasi refcursor yang dikembalikan?

  3. ROWDEPENDENCIES Overhead di Oracle

  4. Perjalanan OOW15 Saya Selesai

  5. Administrasi Dasar Oracle 12c Multitenant