ここに、ストアドプロシージャを呼び出すJavaコードがあります。 とjava.lang.ClassCastException:oracle.jdbc.driver.OracleCallableStatementWrapper oracle.jdbc.OracleCallableStatementJavaからOracleストアドプロシージャを呼び出す
と互換性がない public Connection initiateDBConnection() throws NamingException,
SQLException {
Connection result = null;
InitialContext initialContext = new InitialContext();
DataSource datasource = (DataSource) initialContext
.doLookup(Constants.DATASOURCE_CONTEXT);
result = (Connection) WSJdbcUtil
.getNativeConnection((WSJdbcConnection) datasource
.getConnection());
return result;
}
public void callStoredProcedure(String procedureName,
Map<Integer, Object> map) throws SQLException, NamingException {
OracleCallableStatement statement = (OracleCallableStatement) initiateDBConnection()
.prepareCall(procedureName);
Iterator<Entry<Integer, Object>> params = map.entrySet().iterator();
while (params.hasNext()) {
Entry<Integer, Object> contents = params.next();
statement.setNString(contents.getKey(),
(String) contents.getValue());
System.out.println("Key: " + contents.getKey() + "Value: "
+ contents.getValue());
}
statement.execute();
statement.close();
}
どうやら、私が最初に試した何thatsのが、私は互換性のあるエラー – Bytekoder
があなたの構文またはJDBCドライバに問題がある可能性がありトークンSQL92を得ていない保つこと構文をサポートしていません。 。 – nayakam