2011-12-24 20 views
0

ここに、ストアドプロシージャを呼び出す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(); 
} 

答えて

0

prepareCallメソッドがOracleCallableStatementWrapperオブジェクトを返す表示されます、私はというエラーを取得しておきます。私はWebSphereを使用していることを意味あなたのCOSE WSJdbcConnectionに気づいた

CallableStatement statement = (CallableStatement) initiateDBConnection() 
      .prepareCall(procedureName); 
+0

どうやら、私が最初に試した何thatsのが、私は互換性のあるエラー – Bytekoder

+0

があなたの構文またはJDBCドライバに問題がある可能性がありトークンSQL92を得ていない保つこと構文をサポートしていません。 。 – nayakam

0

次のように

OracleCallableStatementWrapper statement = (OracleCallableStatementWrapper) initiateDBConnection().prepareCall(procedureName); 

また、あなたはJAVA JDBC APIと試みることができます。これが事実であれば、実際にOracle固有のクラス(OracleConnectionなど)を使用する必要がある場合は、この種の状況を「きれいに」管理するためにwebsphereから提供されるWSCallHelperクラスを調べることをお勧めします。ネイティブタイプをそれぞれ呼び出すメソッドとネイティブタイプを渡すメソッドの2つの主なメソッドjdbcCalljdbcPassがあります。

詳しい情報はIBMから、この記事で提供されています:http://www-01.ibm.com/support/docview.wss?uid=swg21409335