Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中注册Raw类型的输出参数_Java_Oracle_Procedure_Callable Statement_Raw Types - Fatal编程技术网

如何在Java中注册Raw类型的输出参数

如何在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

我有一个名为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;
    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
。谢谢你的回答,我按照你说的做了,它解决了我的问题。