真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MySQL中如何使用存儲過程

這篇文章將為大家詳細(xì)講解有關(guān)MySQL中如何使用存儲過程,小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。

十多年的前郭網(wǎng)站建設(shè)經(jīng)驗(yàn),針對設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整前郭建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。創(chuàng)新互聯(lián)從事“前郭網(wǎng)站設(shè)計(jì)”,“前郭網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

使用CallableStatements執(zhí)行存儲過程

mysql版本:5.0
Connector/J的版本:3.1.1以上(java.sql.CallableStatement接口已完全實(shí)現(xiàn),除了getParameterMetaData()方法)
MySQL的存儲過程語法在MySQL參考手冊的"存儲過程和函數(shù)"一章.
http://www.mysql.com/doc/en/Stored_Procedures.html
下面是一個(gè)存儲過程,返回一個(gè)inOutParam增1后的值,以ResultSet形式傳入一個(gè)字符串參數(shù)inputParam.
CREATE PROCEDURE demoSp(IN inputParam VARCHAR(255), INOUT inOutParam INT)
BEGIN
DECLARE z INT;
SET z = inOutParam + 1;
SET inOutParam = z;
SELECT inputParam;
SELECT CONCAT('zyxw', inputParam);
END

要通過connector/J使用demoSp這個(gè)存儲過程,要經(jīng)過幾個(gè)步驟:
1.Connection.prepareCall()

  1. importjava.sql.CallableStatement;

  2. ...

  3. //

  4. // Prepare a call to the stored procedure 'demoSp'

  5. // with two parameters

  6. //

  7. // Notice the use of JDBC-escape syntax ({call ...})

  8. //

  9. CallableStatementcStmt = conn.prepareCall("{call demoSp(?, ?)}");

  10. cStmt.setString(1, "abcdefg");


Connection.prepareCall()方法非常消耗資源,因?yàn)閖dbc驅(qū)動通過元數(shù)據(jù)(metadata)的獲取支持輸出參數(shù).出于執(zhí)行效率的考慮,應(yīng)該盡可能減少不必要的prepareCall調(diào)用,重用CallableStatement對象.

2.注冊輸出參數(shù)(如果有的話)

要得到輸出參數(shù)的值(創(chuàng)建存儲過程時(shí)設(shè)置的OUT和INOUT),JDBC要求這些參數(shù)必須要在數(shù)據(jù)庫操作執(zhí)行之前通過registerOutputPrameter()方法設(shè)置.

  1. importjava.sql.Types;

  2. ...

  3. //

  4. // 下面給出了設(shè)置輸出參數(shù)的幾個(gè)方法

  5. //

  6. // 注冊第二個(gè)參數(shù)為輸出參數(shù)

  7. //

  8. cStmt.registerOutParameter(2);

  9. //

  10. // 注冊第二個(gè)參數(shù)為輸出參數(shù),設(shè)定getObject得到的返回值的類型為整型

  11. //

  12. cStmt.registerOutParameter(2, Types.INTEGER);

  13. //

  14. // 注冊名為"inOutParam"的參數(shù)為輸出參數(shù)

  15. //

  16. cStmt.registerOutParameter("inOutParam");

  17. //

  18. // 注冊名為"inOutParam"的參數(shù)為輸出參數(shù),設(shè)定getObject得到的返回值的類型為整型

  19. //

  20. cStmt.registerOutParameter("inOutParam", Types.INTEGER);


3.設(shè)置輸入?yún)?shù)(如果有的話)
類似PreparedStatement的設(shè)置參數(shù)方法.

  1. //

  2. // 設(shè)置第一個(gè)參數(shù)值

  3. //

  4. cStmt.setString(1, "abcdefg");

  5. //

  6. // 根據(jù)名字設(shè)置參數(shù)值

  7. //

  8. cStmt.setString("inputParameter", "abcdefg");

  9. //

  10. // 根據(jù)索引值設(shè)置輸入/輸出參數(shù)

  11. //

  12. cStmt.setInt(2, 1);

  13. //

  14. // 根據(jù)參數(shù)名設(shè)置輸入/輸出參數(shù)

  15. //

  16. //

  17. cStmt.setInt("inOutParam", 1);

  18. ...



4.執(zhí)行CallableStatement,獲取結(jié)果集合或輸出參數(shù)
盡管CallableStatement支持Statement接口的所有執(zhí)行方法(executeUpdate(),executeQuery()或execute()),最具伸縮性的方法是execute(),因?yàn)槟悴恍枰朗欠襁@個(gè)存儲過程返回結(jié)果集合.

  1. ...

  2. booleanhadResults = cStmt.execute();

  3. //

  4. // 處理返回的結(jié)果集合

  5. //

  6. while(hadResults) {

  7. ResultSet rs = cStmt.getResultSet();

  8. //

  9. ...

  10. hadResults = cStmt.getMoreResults();

  11. }

  12. //

  13. // 獲取輸出參數(shù),通過索引值或參數(shù)名

  14. //

  15. //

  16. intoutputValue = cStmt.getInt(1);

  17. outputValue = cStmt.getInt("inOutParam");

關(guān)于“MySQL中如何使用存儲過程”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯(cuò),請把它分享出去讓更多的人看到。


網(wǎng)頁標(biāo)題:MySQL中如何使用存儲過程
URL地址:http://weahome.cn/article/pcjjhs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部