JDBC CallableStatement存儲過程

2018-03-20 19:58 更新

JDBC教程 - JDBC CallableStatement存儲過程


CallableStatement接口可以接受運(yùn)行時(shí)輸入?yún)?shù)。

CallableStatement用于執(zhí)行數(shù)據(jù)庫存儲過程。

Connection對象也可以創(chuàng)建CallableStatement來調(diào)用數(shù)據(jù)庫存儲過程。

例子

假設(shè),我們有以下MySQL存儲過程。

DELIMITER $$

DROP PROCEDURE IF EXISTS `EMP`.`getEmpName` $$

CREATE PROCEDURE `EMP`.`getEmpName` 
   (IN EMP_ID INT, OUT EMP_FIRST VARCHAR(255))
BEGIN
   SELECT first INTO EMP_FIRST FROM Emp WHERE ID = EMP_ID;
END $$

DELIMITER ;

上面的存儲過程定義了兩個(gè)參數(shù),一個(gè)是EMP_ID,另一個(gè)是EMP_FIRST。它通過員工id返回員工的名字。

IN和OUT之前的參數(shù)名稱告訴參數(shù)的類型。 IN用于數(shù)據(jù)輸入,OUT用于數(shù)據(jù)輸出。

在上面的代碼中,我們傳入IN的員工id,并得到OUT的名字。

我們還可以有INOUT參數(shù),它們都可以接受值和傳遞值。

共有三種類型的參數(shù):IN,OUT和INOUT。

PreparedStatement和CallableStatement都可以接受參數(shù)。

PreparedStatement對象僅使用IN參數(shù)。 CallableStatement對象可以使用所有三個(gè)。

參數(shù) 描述
IN 創(chuàng)建SQL語句時(shí)其值未知的參數(shù)。我們使用setXXX()方法將值傳遞給IN參數(shù)。
OUT 從SQL語句返回其值的參數(shù)。我們使用getXXX()方法從OUT參數(shù)中獲取值。
INOUT 參數(shù)可以傳入和傳出值。我們用setXXX()方法綁定變量,并用getXXX()方法檢索值。

以下代碼顯示如何調(diào)用存儲過程。

conn是 Connection 的一個(gè)對象。

CallableStatement cstmt = null;
String SQL = "{call getEmpName (?, ?)}";
cstmt = conn.prepareCall (SQL);

關(guān)閉CallableStatement對象

我們需要關(guān)閉CallableStatement對象來釋放資源。

首先關(guān)閉Connection對象,它也將關(guān)閉CallableStatement對象。

CallableStatement cstmt = null;
String SQL = "{call getEmpName (?, ?)}";
cstmt = conn.prepareCall (SQL);
cstmt.close();
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號