W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
OceanBase Connector/J 的 CallableStatement
接口支持調(diào)用存儲(chǔ)過(guò)程。
CallableStatement
支持使用 executeUpdate()
,executeQuery()
或 execute()
方法調(diào)用 Statement 執(zhí)行存儲(chǔ)過(guò)程。其中最靈活的調(diào)用方法是 execute()
,因?yàn)槟鸁o(wú)需提前知道存儲(chǔ)過(guò)程是否返回結(jié)果集。
如下為一個(gè)存儲(chǔ)過(guò)程示例,該存儲(chǔ)過(guò)程返回以 1 遞增的 inOutParam
值,以及使用 inputParam
作為 ResultSet
來(lái)輸入字符串。
CREATE PROCEDURE obSp(IN inputParam VARCHAR(100),
INOUT inOutParam INT)
BEGIN
DECLARE n INT;
SET n = inOutParam + 1;
SET inOutParam = n;
SELECT inputParam;
SELECT CONCAT('zhang', inputParam);
END
根據(jù)如下步驟調(diào)用上述示例中的 obSp
存儲(chǔ)過(guò)程:
通過(guò)使用 Connection.prepareCall()
準(zhǔn)備可調(diào)用語(yǔ)句。
示例如下:
import java.sql.CallableStatement;
...
CallableStatement cSt = conn.prepareCall("{call obSp(?, ?)}");
cSt.setString(1, "asdfg");
注冊(cè)輸出參數(shù)(如果存在)
為了檢索輸出參數(shù)的值(在創(chuàng)建存儲(chǔ)過(guò)程時(shí)指定為 OUT
或 INOUT
的參數(shù)),OceanBase Connector/J 要求在執(zhí)行語(yǔ)句之前使用 CallableStatement
接口中的 registerOutputParameter()
方法指定輸出參數(shù)的值。示例如下:
import java.sql.Types;
...
cSt.registerOutParameter(2, Types.INTEGER);
cSt.registerOutParameter("inOutParam", Types.INTEGER);
...
設(shè)置輸入?yún)?shù)(如果存在)。
輸入和輸入/輸出參數(shù)的設(shè)置與 PreparedStatement
對(duì)象相同。但是,CallableStatement
也支持按名稱設(shè)置參數(shù)。示例如下:
cSt.setString(1, "asdfg");
cSt.setString("inputParam", "asdfg");
cSt.setInt(2, 1);
cSt.setInt("inOutParam", 1);
...
執(zhí)行 CallableStatement
,并檢索任何結(jié)果集或輸出參數(shù)。
示例如下:
...
boolean obResults = cSt.execute();
while (obResults) {
ResultSet rs = cSt.getResultSet();
...
obResults = cSt.getMoreResults();
}
int outputValue = cSt.getInt(2);
outputValue = cSt.getInt("inOutParam");
...
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: