码迷,mamicode.com
首页 > 数据库 > 详细

JDBC 调用存储函数 存储过程

时间:2015-08-28 13:30:19      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:java   oracle   函数   存储   jdbc   

JDBC调用存储过程
步骤:
1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,
   在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,
   该方法指明如何调用存储过程。
   
   {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
   {call <procedure-name>[(<arg1>,<arg2>, ...)]}
   
2:通过CallableStatement对象的registerOutParameter()方法注册out参数;
3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数;
    若想将参数设置为null 可以使用setNull()方法
4:通过CallableStatement的excute()方法执行存储过程;

5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;


 案例代码:

/*
 * 文件名:FunctionTest.java
 * 版权:Copyright by www.huawei.com
 * 描述:
 * 修改人:Cuigaochong
 * 修改时间:2015-8-28
 * 跟踪单号:
 * 修改单号:
 * 修改内容:
 */

package com.jdbc.function;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

import org.junit.Test;

import com.jdbc.cgc.pro.OracleDbUtils;

/**
 * <一句话功能简述> <功能详细描述>
 * 
 * @author 姓名 工号
 * @version [版本号, 2015-8-28]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */
public class FunctionTest
{
    private OracleDbUtils utils = OracleDbUtils.getInstance();
    
    /**
     * <一句话功能简述>JDBC调用存储函数 <功能详细描述>
     * 
     * @see [类、类#方法、类#成员]
     */
    @Test
    public void test00()
    {
        Connection conn = null;
        CallableStatement callableStatement = null;
        String sql = "{?=call get_sall(?,?)}";
        
        try
        {
            conn = utils.connection();
            // 1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,
            // 在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,
            // 该方法指明如何调用存储过程。
            // {?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
            // {call <procedure-name>[(<arg1>,<arg2>, ...)]}
            
            callableStatement = conn.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的excute()方法执行存储过程;
            callableStatement.execute();
            
            // 5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;
            double sum = callableStatement.getDouble(1);
            long empCount = callableStatement.getLong(3);
            
            System.out.println(sum);
            System.out.println(empCount);
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
        finally
        {
            utils.releaseSource(callableStatement, conn, null);
        }
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

JDBC 调用存储函数 存储过程

标签:java   oracle   函数   存储   jdbc   

原文地址:http://blog.csdn.net/cuigaochong/article/details/48048099

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!