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); } }}
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。