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

Memanggil prosedur Oracle PL/SQL dengan tipe pengembalian Objek Kustom dari driver 0jdbc6 JDBCthin

Saya akhirnya (dengan sedikit bantuan dari orang lain) menemukan jawabannya. Itu datang dalam tiga bagian:

Yang pertama adalah saya perlu menggunakan:

OracleCallableStatement stmt = (OracleCallableStatement) conn.prepareCall(query);

daripada JDBC CallableStatement sederhana yang saya coba gunakan.

Bagian kedua adalah saya harus mendaftarkan parameter "keluar" saya sebagai berikut:

stmt.registerOutParameter(2, OracleTypes.STRUCT, "DATA_SUMMARY_TAB");

Bagian ketiga, dan tersirat dalam bagian 2 di atas, adalah bahwa "DATA_SUMMARY_TAB" harus dalam KASUS UPPER. Jika Anda memasukkannya ke dalam huruf kecil, maka Anda mendapatkan pesan kesalahan samar sebagai berikut:

java.sql.SQLException: invalid name pattern: MYTEST.data_summary_tab

di oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)di oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)di oracle.sql.StructDescriptor.initPickler(StructDescriptor.java:390) oracle.sql.StructDescriptor.(StructDescriptor.java:320)

Itu saja.

Juga, harap perhatikan jenis objek khusus kami tidak ada dalam paket apa pun. Jika ya, Anda mungkin perlu sedikit meretas parameter ketiga.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kesalahan mengambil tabel pengembalian urutan dari fungsi Oracle di C # di mana fungsi menggunakan dblink ke SQL Server

  2. Bagaimana cara kerja fungsi HEXTORAW()? Apa itu algoritma?

  3. Oracle SELECT TOP 10 catatan

  4. Periksa tanggal yang tumpang tindih pada setiap baris tabel Oracle SQL

  5. Periksa apakah Tabel Ada di Oracle