sql >> Databasteknik >  >> RDS >> Oracle

Anropa en Oracle PL/SQL-procedur med returtyper för anpassade objekt från 0jdbc6 JDBCthin-drivrutiner

Jag fick äntligen (med lite hjälp från andra) reda på svaret på detta. Den kom i tre delar:

Den första var att jag behövde använda en:

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

snarare än det enkla JDBC CallableStatement jag hade försökt använda.

Den andra delen var att jag var tvungen att registrera min "out"-parameter enligt följande:

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

Den tredje delen, och den är implicit i del 2 ovan, var att "DATA_SUMMARY_TAB" måste vara i VERSALER. Om du sätter det med små bokstäver får du ett kryptiskt felmeddelande enligt följande:

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

at oracle.jdbc.oracore.OracleTypeADT.initMetadata(OracleTypeADT.java:553)at oracle.jdbc.oracore.OracleTypeADT.init(OracleTypeADT.java:469)at oracle.sql.StructDescriptor.StrucvaPickler(.StrucvaPickor) oracle.sql.StructDescriptor.(StructDescriptor.java:320)

Det var allt.

Observera också att vår anpassade objekttyp inte fanns i några paket. Om det är det kan du behöva hacka den tredje parametern lite.



  1. PHP / MySQLi:Hur man förhindrar SQL-injektion på INSERT (koden fungerar delvis)

  2. ÄNDRA TABELL LIKA

  3. PostgreSQL:Iterera genom en tabellrader med for loop, hämta kolumnvärde baserat på aktuell rad

  4. Hur man får sql WHERE uttalande automatisk uppdatering från localhost-länken