Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wywołanie procedury Oracle PL/SQL z typami zwracanymi Custom Object ze sterowników 0jdbc6 JDBCthin

W końcu (z niewielką pomocą innych) znalazłem odpowiedź na to pytanie. Przyszło w trzech częściach:

Po pierwsze, musiałem użyć:

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

zamiast prostego JDBC CallableStatement, którego próbowałem użyć.

Druga część polegała na tym, że musiałem zarejestrować mój parametr „out” w następujący sposób:

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

Trzecia część, i jest dorozumiana w części 2 powyżej, była taka, że ​​„DATA_SUMMARY_TAB” musiało być pisane WIELKIMI LITERAMI. Jeśli zapiszesz go małymi literami, otrzymasz zagadkowy komunikat o błędzie w następujący sposób:

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

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

To wszystko.

Należy również pamiętać, że nasz niestandardowy typ obiektu nie znajdował się w żadnym pakiecie. Jeśli tak, być może trzeba będzie trochę zhakować trzeci parametr.



  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 PLS-00363:wyrażenie „” nie może być użyte jako cel przypisania

  2. Maksymalny rozmiar PL/SQL VARRAY

  3. Znajdź najbardziej potomny węzeł rodzica (dowolny poziom) w Oracle

  4. @Temporal(TemporalType.DATE) z Oracle 12

  5. JdbcTemplate — wstaw lub zaktualizuj Oracle BLOB za pomocą SQL MERGE