Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
spring Stored过程输入输出参数用法_Spring_Jdbctemplate_Java Stored Procedures - Fatal编程技术网

spring Stored过程输入输出参数用法

spring Stored过程输入输出参数用法,spring,jdbctemplate,java-stored-procedures,Spring,Jdbctemplate,Java Stored Procedures,您好,我正在调用一个oracle存储过程,该过程带有一个in out参数。 我从spring的StoredProcedure类扩展而来的类中调用该过程。根据发布的数量,我在类中将inout参数声明为out参数,并在映射函数中向该参数传递一个值。 问题是它只能作为out参数工作,而不能作为in参数。有人能告诉我我可能做错了什么吗 public class MyService extends StoredProcedure { public MyService(JdbcTemplate jd

您好,我正在调用一个oracle存储过程,该过程带有一个in out参数。 我从spring的StoredProcedure类扩展而来的类中调用该过程。根据发布的数量,我在类中将inout参数声明为out参数,并在映射函数中向该参数传递一个值。 问题是它只能作为out参数工作,而不能作为in参数。有人能告诉我我可能做错了什么吗

public class MyService extends StoredProcedure {
    public MyService(JdbcTemplate jdbcTemplate,String sqlString) {
        setJdbcTemplate(jdbcTemplate);        
        setSql(sqlString);
        setFunction(false);                       
        declareParameter( new SqlOutParameter("inoutparam",OracleTypes.INTEGER));
        declareParameter( new SqlParameter("inparam",Types.VARCHAR));
        compile();
    }

    public Map execute(int arg1,String arg2) {
        Map<String, Object> inParams = new HashMap<String, Object>();
        inParams.put("inoutparam", arg1);
        inParams.put("inparam", arg2);      
        Map<String,Object> map = execute(inParams);
        return map;          
    }
}


PROCEDURE prc_my_proc (
 inoutparam        IN OUT NUMBER,
 inparam             VARCHAR2)
IS
BEGIN

INSERT INTO save_log values ( inoutparam,sysdate);
inoutparam := 100;
END prc_my_proc;
公共类MyService扩展了StoredProcess{
公共MyService(JdbcTemplate JdbcTemplate,String sqlString){
setJdbcTemplate(jdbcTemplate);
setSql(sqlString);
setFunction(假);
declareParameter(新的SqlOutParameter(“inoutparam”,OracleTypes.INTEGER));
declareParameter(新的SqlParameter(“inparam”,Types.VARCHAR));
编译();
}
公共映射执行(int arg1,字符串arg2){
Map inParams=new HashMap();
输入参数put(“inoutparam”,arg1);
inParams.put(“inparam”,arg2);
Map=execute(inParams);
返回图;
}
}
程序prc_我的程序(
inoutparam输入输出编号,
inparam VARCHAR2)
是
开始
插入保存日志值(inoutparam、sysdate);
inoutparam:=100;
结束prc_my_proc;

通过使用declareParameter(新的SqlInOutParameter(“inoutparam”,OracleTypes.INTEGER))解决了这个问题;