JDBC 調用儲存函數 預存程序,jdbc預存程序

來源:互聯網
上載者:User

JDBC 調用儲存函數 預存程序,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);        }    }}


著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.