Java Oracle JDBC的替代方案是什么;s CallableStatement getParameterMetaData().getParameterType()?

Java Oracle JDBC的替代方案是什么;s CallableStatement getParameterMetaData().getParameterType()?,java,jdbc,ojdbc,Java,Jdbc,Ojdbc,以下代码引发异常: CallableStatement cs = ... cs.getParameterMetaData().getParameterType( columnIndex ); Caused by: java.sql.SQLException: Unsupported feature at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:166

以下代码引发异常:

CallableStatement cs = ...
cs.getParameterMetaData().getParameterType( columnIndex );

Caused by: java.sql.SQLException: Unsupported feature
    at oracle.jdbc.driver.OracleParameterMetaData.getParameterType(OracleParameterMetaData.java:166)
    ... 26 more

获取参数类型的替代方法是什么?

如果有人能提供更好的答案,我会接受你的答案。这是我对自己问题的回答

CallableStatement cs = ...
for( int i = 1; i <= cs.getParameterMetaData().getParameterCount(); i++) {
    try {
        // because cs.getParameterMetaData().getParameterType( i ) is not supported by ojdbc, we let this throw SQLException
        Object o = cs.getObject(i);
        if( o instanceof ResultSet ) {
            rs = (ResultSet)o;
        }
    } catch( SQLException sqle ) {
        continue;
    }
}
CallableStatement cs=。。。

for(int i=1;i为什么您需要知道参数类型(也是以动态方式)?是在调用语句之前转换类型吗?如果是这样,您可以尝试使用
setObject
调用它,并希望Oracle能够自己转换它。我们正在构建一个实用程序,从所有参数中检测任何结果集,并对其进行处理并返回它。它的设置位置事先不知道。您的意思是一个OUT参数,它最终是一个ResultSet?Oracle会这样做吗?那会是一个REFCURSOR吗?是的,它是一个OUT参数,是的,Oracle会这样做,它可以工作。但是因为我们希望它是动态的,所以我需要该方法的功能。它实际上是SYS_REFCURSOR。