JdbcTemplate执行带输入参数和输出参数的存储过程

直接上代码:

    /**
        * 执行返回一个输出参数,若干输入参数的存储过程
        * 方法第一个参数为存储过程名称,第二个参数为存放输入参数的数组(按顺序存放),方法返回值为存储过程输出参数
        */
    public String execProcedureWithOutParam(final String procName,final String[] inParams){
        String returnVal=(String)getJdbcTemplate().execute(new CallableStatementCreator() {

            public CallableStatement createCallableStatement(Connection con)
                    throws SQLException {
                int procArgNum=inParams.length+1;
                String storedProc="{call "+procName+"(";
                for (int i = 0; i < procArgNum; i++) {
                    if(i!=procArgNum-1){
                        storedProc+="?,";
                    }else {
                        storedProc+="?";
                    }
                }
                storedProc+=")}";

                CallableStatement cs=con.prepareCall(storedProc);
                for (int i = 1; i <=inParams.length; i++) {
                    cs.setString(i, inParams[i-1]);
                }
                cs.registerOutParameter(inParams.length+1, java.sql.Types.VARCHAR);
                return cs;
            }
        },new CallableStatementCallback() {

            public Object doInCallableStatement(CallableStatement cs)
                    throws SQLException, DataAccessException {
                cs.execute();
                return cs.getString(inParams.length+1);
            }
        });
        return returnVal;
    }
时间: 2024-10-19 03:47:16

JdbcTemplate执行带输入参数和输出参数的存储过程的相关文章

C#值参数、引用参数和输出参数

一.值参数:在使用参数时,是把一个值传递给函数使用的一个变量.对函数中此变量的任何修改都不会影响函数调用中指定的参数.(由于函数只有一个返回值,不能用作参数的多个变量值). 二.引用参数:即函数处理的变量与函数调用中使用的变量相同,而不仅仅是值相同的变量.因此,对这个变量的任何改变都会影响用作参数的变量值.需用ref关键字指定参数.用作ref参数的变量有两个限制,由于函数可能会改变引用参数的值,所有必须在函数调用中使用“非常量”变量.其次,必须使用初始化过的变量. 三.输出参数:out关键字,指

C#方法参数--值参数,引用参数,输出参数

值参数: 使用值参数,通过复制实参的值到形参的方式,把数据传递到方法,方法被调用的时候,系统做如下操作: 在栈中为形参分配空间: 复制实参到形参. 注意:一个值参数的实参不一定是变量,它可以是任何能够计算成相应数据类型的表达式. 在把变量用作实参之前,变量必须被赋值(除非是输出参数,这个稍后介绍),对于引用类型,变量可以设置成实际引用或者Null. 引用参数: 使用引用参数时,必须在方法的申明和调用中都使用关键字ref修饰符. 实参必须是变量,在用作实参前必须被赋值.如果是引用类型的变量,可以赋

ref引用类型,数组型参数,out输出参数

ref和out的相同点和不同点 共同点:都是引用传递不同点:ref的参数在调用之前一定要赋值,在方法调用的过程中可以不要赋值.    out的参数在调用之前可以不赋值,在方法调用的过程中一定要赋值. //方法的参数    class Program    {        static void Main(string[] args)        {            //值传递            //int num = 5;            //Change(num);    

SQL Server 第三堂课,学习数据库函数。跟C#语言异曲同工,同样是由输入参数,输出参数,函数体,返回值四要素组成,不同的是语法和写法。掌握知识的关键在与学好C#语言的函数

--存储过程 --定义变量 declare @bianliang int set @bianliang =12 --变量赋值 select @bianliang print @biangliang --定义两个变量求和 declare @bianliang1 int, @bianliang2 int set @bianliang1 =1 --给变量赋值用set set @bianliang2 =2 select @bianliang1+@bianliang2 --创建存储过程 create pr

C#形参,实参,值传递参数,引用传递参数,输出参数,参数数组的学习

1)形参 形参顾名思义就是形式上的参数,不是实际的参数,它代替实际传入方法的值.在方法体代码中代表了值本身参与运算.形参定义于参数中,它不同于方法体内局部变量,因为是一个变量,在它的作用域内不允许存在一个同名的局部变量,不管他们的类型是否相同,都是不允许出现同名的. 看下面的代码示例: 1 //这其中的strName就是一个形参也是一个变量,不允许出现同名的局部变量 2 public void SayHelloTo(string strName) 3 { 4 Console.WriteLine(

例题:把一个超市购物的题做成函数。这个题做成函数没有必要,但可以了解输入参数,输出参数,返回值,函数体,还有结构体,ArryList集合,for循环算结果,以及集合里 .count的使用

class Program { struct shangpin                  //定义个结构体 { public string mingcheng; public int jiage; public int shuliang; } public double  chaoshi(double zongjia)    //定义函数名 { ArrayList al = new ArrayList();   //定义一个集合 while (true) { shangpin sp =

c#调用带输出参数的存储过程

sql server中编写一个存储过程: CREATE PROCEDURE ProGetPWD @username varchar(20), @password varchar(20) OUTPUT AS BEGIN SELECT @password = password FROM Users WHERE username = @username END -------------------------- 下面是.NET中调用存储过程的方法: string strConnection = "u

Java方法输出参数

在写Java代码的时候,自定义方法的时候,都会牵扯到参数问题,方法参数包括输出参数和输入参数. 下面主要说说输出参数: 1.没有输出参数的时候就直接把输出参数写成void就可以. 2.当输出参数只有一个数据的时候,直接返回输出参数直接写成输出数据的类型就行. 3.当输出多个数据且类型一致的时候,使用数组,集合等等也可以实现. 4.当输出多个数据但是数据类型不一致的时候,此时就比较麻烦.此时需要将需要返回的数据类型封装到一个类中,然后返回的值写成新封装的类的名字即可. 例如: <span styl

matlab 可变参数与默认参数设置

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net 1. 基本思路 矩阵矢量化编程,而不是循环和遍历: GPU 并行计算: 使用稀疏矩阵: 2. 实践 可变长输入参数,输出参数,需要解析(使用大括号进行索引): varargin varargout 函数体内,首先进行的是可变长输入输出参数的解析,赋值: 可变长参数与参数默认值: if ~exist('sigma', 'var'),