Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.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 Spring Jdbc的Oracle Sql函数返回类型_Java_Oracle_Spring_Function_Jdbc - Fatal编程技术网

Java Spring Jdbc的Oracle Sql函数返回类型

Java Spring Jdbc的Oracle Sql函数返回类型,java,oracle,spring,function,jdbc,Java,Oracle,Spring,Function,Jdbc,我有一个sql函数(不知道sql) 我使用SpringJDBC模板调用这个函数 SimpleJdbcCall caller = new SimpleJdbcCall(this.jdbcTemplateMartinique).withSchemaName("RATELIMIT_OWN").withFunctionName("Get_Conns_By_Login_IP_CallerId").withReturnValue() .declareParameters(new S

我有一个sql函数(不知道sql)

我使用SpringJDBC模板调用这个函数

 SimpleJdbcCall caller = new SimpleJdbcCall(this.jdbcTemplateMartinique).withSchemaName("RATELIMIT_OWN").withFunctionName("Get_Conns_By_Login_IP_CallerId").withReturnValue()
            .declareParameters(new SqlParameter(P_YYYYMM, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_LOGIN, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_FRAMED_IP, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_CALLER_ID, Types.VARCHAR));

    SearchAccountBean resultBean = null;

    SqlParameterSource paramMap = new MapSqlParameterSource().addValue(P_YYYYMM, searchAccountBean.getDate(), Types.VARCHAR).addValue(P_LOGIN, searchAccountBean.getLogin(), Types.VARCHAR)
            .addValue(P_FRAMED_IP, searchAccountBean.getIpAddress(), Types.VARCHAR).addValue(P_CALLER_ID, searchAccountBean.getCaller(), Types.VARCHAR);
    caller.compile();
    Object result = caller.executeFunction(Object.class, paramMap);
现在它抛出了无效的列类型1111。 我调试后发现它返回“返回SQL类型1111”


我想知道如何在java中检索function result的值。

这看起来像是我最近通过为输出参数注册“类型处理程序”解决的问题。诀窍是为SqlOutParameter注册SqlReturnType。接口的方法getTypeValue()允许您处理来自Oracle结构的信息,该结构很可能是您的类型在JDBC中的表示形式

您可以在此处找到更多详细信息:

这看起来像是我最近刚刚通过为输出参数注册“类型处理程序”解决的问题。诀窍是为SqlOutParameter注册SqlReturnType。接口的方法getTypeValue()允许您处理来自Oracle结构的信息,该结构很可能是您的类型在JDBC中的表示形式

您可以在此处找到更多详细信息:

 SimpleJdbcCall caller = new SimpleJdbcCall(this.jdbcTemplateMartinique).withSchemaName("RATELIMIT_OWN").withFunctionName("Get_Conns_By_Login_IP_CallerId").withReturnValue()
            .declareParameters(new SqlParameter(P_YYYYMM, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_LOGIN, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_FRAMED_IP, Types.VARCHAR))
            .declareParameters(new SqlParameter(P_CALLER_ID, Types.VARCHAR));

    SearchAccountBean resultBean = null;

    SqlParameterSource paramMap = new MapSqlParameterSource().addValue(P_YYYYMM, searchAccountBean.getDate(), Types.VARCHAR).addValue(P_LOGIN, searchAccountBean.getLogin(), Types.VARCHAR)
            .addValue(P_FRAMED_IP, searchAccountBean.getIpAddress(), Types.VARCHAR).addValue(P_CALLER_ID, searchAccountBean.getCaller(), Types.VARCHAR);
    caller.compile();
    Object result = caller.executeFunction(Object.class, paramMap);