sql >> Database >  >> RDS >> Oracle

Een Oracle PL/SQL-procedure aanroepen met retourtypes voor aangepaste objecten vanuit 0jdbc6 JDBCthin-stuurprogramma's

Ik heb eindelijk (met een beetje hulp van anderen) het antwoord hierop gevonden. Het kwam in drie delen:

De eerste was dat ik een:

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

in plaats van de eenvoudige JDBC CallableStatement die ik had geprobeerd te gebruiken.

Het tweede deel was dat ik mijn "out" parameter als volgt moest registreren:

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

Het derde deel, en het is impliciet in deel 2 hierboven, was dat "DATA_SUMMARY_TAB" in HOOFDLETTERS moest staan. Als je het in kleine letters zet, krijg je als volgt een cryptische foutmelding:

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

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

Dat is het.

Houd er ook rekening mee dat ons aangepaste objecttype niet in pakketten zat. Als dat zo is, moet je misschien de derde parameter een beetje hacken.



  1. MYSQL Selecteer één willekeurig record uit elke categorie

  2. MS SQL Server laatst ingevoerde ID

  3. Hoe exporteer ik de resulterende gegevens in PostgreSQL naar .CSV?

  4. Hoe stel ik de tijdzone in voor Postgres psql?