如何在Java中注册Raw类型的输出参数
我有一个名为enter的Oracle过程,该过程返回原始类型作为结果。当我想注册名为'ret'的参数时,我遇到以下错误:如何在Java中注册Raw类型的输出参数,java,oracle,procedure,callable-statement,raw-types,Java,Oracle,Procedure,Callable Statement,Raw Types,我有一个名为enter的Oracle过程,该过程返回原始类型作为结果。当我想注册名为'ret'的参数时,我遇到以下错误: java.sql.SQLException: Parameter Type Conflict: sqlType=-2 这是我的java方法和导入语句: import org.apache.openjpa.jdbc.sql.Raw; public Raw enter(int pid) { Connection connection; CallableSta
java.sql.SQLException: Parameter Type Conflict: sqlType=-2
这是我的java方法和导入语句:
import org.apache.openjpa.jdbc.sql.Raw;
public Raw enter(int pid) {
Connection connection;
CallableStatement cstmt;
try {
connection = cscadaDataSource.getConnection();
connection.setAutoCommit(false);
cstmt = connection.prepareCall("{ CALL process_logging.PROCESSMONITOR_ENTER(?,?) }");
cstmt.setInt(1, pid);
cstmt.registerOutParameter(2,OracleTypes.RAW , "ret");
cstmt.execute();
Raw result = (Raw) cstmt.getObject(2);
connection.commit();
return result;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
如何在Java中获取这个原始类型的输出参数?
提前谢谢 :
参数:parameterIndex-第一个参数为1,第二个参数为2,…
sqlType-类型中的值
typeName—SQL结构化类型的完全限定名 您有参数名,而不是参数类型 尝试仅使用:
cstmt.registerOutParameter(2,OracleTypes.RAW)
为RAW
导入的内容是什么?我原以为应该是oracle.sql.RAW
。我不确定我是否理解你的问题。我的过程规范是这样的:procedure PROCESSMONITOR_ENTER(pidBr IN NUMBER,ret out RAW)IN procedure IN variable ret I return sys_guid(),在Java代码中,您导入什么来获取RAW
类?导入org.apache.openjpa.jdbc.sql.RAW;方法的返回类型,导入oracle.jdbc.OracleTypes;对于registeroutparameter中的oracle类型。问题是第二部分尝试使用oracle.sql.RAW
而不是org.apache.openjpa.jdbc.sql.RAW
。谢谢你的回答,我按照你说的做了,它解决了我的问题。