Ho un'applicazione Java che gira su Weblogic. L'applicazione deve accedere a una stored procedure in un database DB2, pertanto un'origine dati JDBC è configurata e accessibile dal suo nome JNDI.Weblogic: chiama la stored procedure DB2 senza nome schema (property currentSchema)
Fonte dei dati:
ClassDriver: com.ibm.db2.jcc.DB2Driver
Properties:
user=MYUSER
DatabaseName=MYDB
Il seguente esempio funziona come previsto.
Context env = null;
DataSource pool = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://myserver:7777");
env = new InitialContext(ht);
pool = (DataSource) env.lookup("jdbc/myjndiname");
conn = pool.getConnection();
// call stored procedure with schema name
String procName = "MYSCHEMA.MYSTOREDPROCEDURE";
String sql = "CALL " + procName + "(?)";
callStmt = conn.prepareCall(sql);
callStmt.setString(1, "1");
callStmt.execute();
Ma ora ho bisogno di chiamare la stored procedure senza il nome dello schema e utilizzare una proprietà driver JDBC, invece.
Fonte dei dati:
ClassDriver: com.ibm.db2.jcc.DB2Driver
Properties:
user=MYUSER
DatabaseName=MYDB
db2.jcc.override.currentSchema=MYSCHEMA
com.ibm.db2.jcc.DB2BaseDataSource.currentSchema=MYSCHEMA
i seguenti risultati di chiamata SQL in un errore
// call stored procedure without schema name
String procName = "MYSTOREDPROCEDURE";
String sql = "CALL " + procName + "(?)";
callStmt = conn.prepareCall(sql);
errore SQL:
SQLCODE = -440, ERROR: NO PROCEDURE BY THE NAME MYSTOREDPROCEDURE HAVING
COMPATIBLE ARGUMENTS WAS FOUND IN THE CURRENT PATH
presumo che le proprietà "currentSchema" sono sbagliate.
Modifica: Sembra che mi sia sbagliato: la proprietà currentSchema
non è il problema! L'istruzione SQL "select current_schema fromsysibm.sysdummy1"
restituisce lo schema corretto (MYSCHEMA
). La domanda è ora, perché "CALL MYSCHEMA.MYSTOREDPROCEDURE(?)"
funziona e "CALL MYSTOREDPROCEDURE(?)"
risultati in un errore ...
Qualche suggerimento? Grazie!
La proprietà "currentFunctionPath" ha risolto il problema. Grazie mille! – Hellen