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

Извикване на Oracle PL/SQL процедура с потребителски типове връщане на обект от 0jdbc6 JDBCthin драйвери

Най-накрая (с малко помощ от други) открих отговора на това. Предлага се в три части:

Първият беше, че трябваше да използвам:

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

вместо простия JDBC CallableStatement, който се опитвах да използвам.

Втората част беше, че трябваше да регистрирам моя "out" параметър, както следва:

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

Третата част, и тя се подразбира в част 2 по-горе, беше, че „DATA_SUMMARY_TAB“ трябваше да бъде с ГЛАВНИ РЕГИСТРИ. Ако го поставите с малки букви, тогава ще получите загадъчно съобщение за грешка, както следва:

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

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

Това е.

Също така, имайте предвид, че нашият персонализиран тип обект не беше в нито един пакет. Ако е така, може да се наложи да хакнете малко третия параметър.



  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. Как да реша ORA-29471 на dbms_sql.open_cursor?

  3. Доставчикът на данни на Oracle закрепва работния процес на IIS, когато уеб сайтът е спрян

  4. Как да индексирате Y/N колона в Oracle

  5. Какъв тип данни трябва да обвържа като параметър на заявката, който да използвам с колона NUMBER(15) в Oracle ODBC?