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。