我有一个在Weblogic上运行的Java应用程序.应用程序需要访问DB2数据库中的存储过程,因此JDBC数据源由其JNDI名称配置和访问.
数据源:
ClassDriver: com.ibm.db2.jcc.DB2Driver
Properties:
user=MYUSER
DatabaseName=MYDB
Run Code Online (Sandbox Code Playgroud)
以下示例按预期工作.
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();
Run Code Online (Sandbox Code Playgroud)
但是现在我需要调用没有模式名称的存储过程,而是使用JDBC驱动程序属性.
数据源:
ClassDriver: com.ibm.db2.jcc.DB2Driver
Properties:
user=MYUSER
DatabaseName=MYDB
db2.jcc.override.currentSchema=MYSCHEMA
com.ibm.db2.jcc.DB2BaseDataSource.currentSchema=MYSCHEMA
Run Code Online (Sandbox Code Playgroud)
以下SQL调用导致错误
// call stored procedure without schema name
String procName …Run Code Online (Sandbox Code Playgroud)