十、JDBC-调用函数&存储过程

如何使用JDBC调用存储在数据库中的函数或存储过程:

* 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
*    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
*    该字符串用于指明如何调用存储过程

* 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数

* 3.通过CallableStatement对象的setXxx()方法设定IN或In out
*    参数,若想将参数设为null,可以使用setNUll()

* 4.通过CallableStatement对象的execute()方法执行存储过程

* 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()函数进行获取

具体的代码实现:

@Test
    public void testCallableStatement() {
        Connection connection = null;
        /**
         * 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 
         * 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}
         */
        // 调用存储函数和调用存储过程,一个sql语句的区别
        String sql = "{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}";
        CallableStatement callableStatement = null;
        try {

            connection = JDBCTools.getConnection();
            /*
             * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
             * 对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
             * 该字符串用于指明如何调用存储过程
             */
            callableStatement = connection.prepareCall(sql);

            /*
             * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数
             */
            callableStatement.registerOutParameter(1, Types.NUMERIC);
            callableStatement.registerOutParameter(3, Types.NUMERIC);

            /*
             * 3.通过CallableStatement对象的setXxx()方法设定IN或In out
             * 参数,若想将参数设为null,可以使用setNUll()
             */
            callableStatement.setInt(2, 80);

            /* 4.通过CallableStatement对象的execute()方法执行存储过程 */
            callableStatement.execute();

            /*
             * 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()
             */
            double sumSalary = callableStatement.getDouble(1);
            long empCount = callableStatement.getLong(3);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCTools.release(null, callableStatement, connection);
        }
    }

调用函数和存储过程的sql语句的区别:

* 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]} 
* 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}

这个知识点暂时没用到,先做下笔记,待以后用到以后再深入研究,JDBC的学习暂时告一段落,开启新的学习征程!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值