sql >> Databáze >  >> RDS >> Oracle

Volání procedury Oracle PL/SQL s návratovými typy uživatelských objektů z ovladačů 0jdbc6 JDBCthin

Na to jsem konečně (s malou pomocí ostatních) našel odpověď. Sešlo se to ve třech částech:

První bylo, že jsem potřeboval použít:

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

spíše než jednoduchý JDBC CallableStatement, který jsem se snažil použít.

Druhá část byla, že jsem musel zaregistrovat svůj parametr „out“ následovně:

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

Třetí částí, a to je implicitně uvedeno v části 2 výše, bylo, že "DATA_SUMMARY_TAB" musí být VELKÝMI PÍSMENY. Pokud jej zadáte malými písmeny, zobrazí se následující záhadná chybová zpráva:

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.Structerjavick3Descript. oracle.sql.StructDescriptor.(StructDescriptor.java:320)

To je ono.

Všimněte si také, že náš vlastní typ objektu nebyl v žádném balíčku. Pokud ano, možná budete muset trochu hacknout třetí parametr.



  1. Připojení MySQL ztraceno:systémová chyba:110

  2. Použití Oracle JDeveloper s databázovou službou MySQL na platformě Oracle Cloud, část 2

  3. Proč je PostgreSQL na Windows tak pomalý?

  4. Zobrazila se mi chyba Nepodporované vyhledávání 'icontains' pro CharField nebo připojení v poli není povoleno.