<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    氧氣中毒 - J2EE

    爪吐奕奕征途
    posts - 24, comments - 10, trackbacks - 0, articles - 0
       :: 首頁 :: 新隨筆 ::  ::  :: 管理

    用SQL語句創建存儲過程

    Posted on 2006-06-14 15:01 氧氣中毒 閱讀(1756) 評論(0)  編輯  收藏 所屬分類: 數據處理
    本節例示一個不帶參數的簡單存儲過程。多數存儲過程的功能比本例復雜多了,但這里主要說明存儲過程的一些基本要點。如前面所述,不同DBMS定義存儲過程的語法是不同的。例如,有些DBMS使用begin . . . end或其他關鍵字指明存儲過程定義的開始和結束。在有些DBMS中,下面的SQL語句可創建一個存儲過程:

    create procedure SHOW_SUPPLIERS
    as
    select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME
    from SUPPLIERS, COFFEES
    where SUPPLIERS.SUP_ID = COFFEES.SUP_ID
    order by SUP_NAME
    

    下面的代碼將SQL語句放到一個字符串中,然后賦給變量createProcedure以備后用:

    String createProcedure = "create procedure SHOW_SUPPLIERS " +
    			 "as " +
    			 "select SUPPLIERS.SUP_NAME, COFFEES.COF_NAME " +
    			 "from SUPPLIERS, COFFEES " +
    			 "where SUPPLIERS.SUP_ID = COFFEES.SUP_ID " +
    			 "order by SUP_NAME";
    

    下面的代碼段使用Connection對象con來創建Statement對象,用于把創建存儲過程的SQL語句發送給數據庫:

    Statement stmt = con.createStatement();
    stmt.executeUpdate(createProcedure);
    

    存儲過程SHOW_SUPPLIERS將作為一個可調用的數據庫對象在數據庫中編譯并存儲,調用時就像調用其他方法一樣。

    從JDBC調用存儲過程

    JDBC允許在用Java編寫的程序中調用存儲過程。第一步是創建一個CallableStatement對象。就像Statement和PreparedStatement對象一樣,利用一個打開的Connection對象即可完成創建。CallableStatement對象包含了存儲過程的一個調用;但它不包含存儲過程本身。下面的第一行代碼使用連接con創建了存儲過程SHOW_SUPPLIERS的一個調用?;ɡㄌ杻鹊哪遣糠志褪谴鎯^程的轉義語法。當驅動程序碰到“{call SHOW_SUPPLIERS}”時,它將把這個轉義語法轉換成數據庫使用的本地SQL,以調用名為SHOW_SUPPLIERS的存儲過程。

    
    CallableStatement cs = con.prepareCall("{call SHOW_SUPPLIERS}");
    ResultSet rs = cs.executeQuery();
    

    執行后結果集rs的內容如下:

    SUP_NAME			COF_NAME
    ----------------		-----------------------
    Acme, Inc.			Colombian
    Acme, Inc.			Colombian_Decaf
    Superior Coffee			French_Roast
    Superior Coffee			French_Roast_Decaf
    The High Ground			Espresso
    

    注意,用于執行cs的方法是executeQuery,因為cs調用的存儲過程包含一個查詢,執行后產生一個結果集。如果存儲過程包含一條更新或一條DLL語句,那就要使用executeUpdate方法。但有時一個存儲過程包含多條SQL語句,因而它產生的不只是一個結果集、不只是一個更新計數或產生一些結果集和更新計數的組合。這樣就有多個結果集,這時就應該使用execute方法來執行CallableStatement。

    CallableStatement類是PreparedStatement的子類,因此CallableStatement對象可與PreparedStatement對象一樣帶有輸入參數。此外,CallableStatement對象還可帶輸出參數或輸入/輸出參數。INOUT參數和execute方法很少使用。要獲取更詳細信息,請參考“使用Java進行JDBC數據庫訪問”。

    主站蜘蛛池模板: 国产成人免费在线| 又黄又大的激情视频在线观看免费视频社区在线 | 3d成人免费动漫在线观看| 无人在线直播免费观看| 中文字幕在线观看亚洲| 曰批视频免费40分钟试看天天| 国产成人在线观看免费网站| 亚洲国产精品18久久久久久| 日本午夜免费福利视频| 国产精品亚洲va在线观看| 99视频精品全部免费观看| 亚洲人成影院在线| 亚洲毛片免费视频| 亚洲国产av玩弄放荡人妇| 一级毛片全部免费播放| 免费A级毛片无码久久版| www.xxxx.com日本免费| 亚洲精品tv久久久久久久久 | 亚洲五月综合网色九月色| 欧洲黑大粗无码免费| 亚洲处破女AV日韩精品| 人妻无码久久一区二区三区免费 | 美女被免费网站在线视频免费| 十八禁无码免费网站| 亚洲人成电影在线观看青青| 白白国产永久免费视频| 一级毛片免费不卡| 亚洲美女在线观看播放| 免费黄色毛片视频| 亚洲午夜精品国产电影在线观看| 久久免费观看国产精品88av| 亚洲国产精品专区| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 最近免费mv在线观看动漫| 免费吃奶摸下激烈视频| 青柠影视在线观看免费| 亚洲日韩久久综合中文字幕| 国产成人福利免费视频| 免费人成又黄又爽的视频在线电影| 毛片免费视频播放| 成人一级免费视频|