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

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

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

    靈魂-放水

    為學日益,為道日損。

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      296 Posts :: 10 Stories :: 274 Comments :: 0 Trackbacks
    在大型數據庫系統中,存儲過程和觸發器具有很重要的作用。無論是存儲過程還是觸發器,都是SQL 語句和流程控制語句的集合。就本質而言,觸發器也是一種存儲過程。存儲過程在運算時生成執行方式,所以,以后對其再運行時其執行速度很快。SQL Server 2000 不僅提供了用戶自定義存儲過程的功能,而且也提供了許多可作為工具使用的系統存儲過程。

    12.1.1 存儲過程的概念
    存儲過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,經編譯后存儲在數據庫。中用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來執行它。

    ????在SQL Server 的系列版本中存儲過程分為兩類:系統提供的存儲過程和用戶自定義存儲過程。系統過程主要存儲在master 數據庫中并以sp_為前綴,并且系統存儲過程主要是從系統表中獲取信息,從而為系統管理員管理SQL Server 提供支持。通過系統存儲過程,MS SQL Server 中的許多管理性或信息性的活動(如了解數據庫對象、數據庫信息)都可以被順利有效地完成。盡管這些系統存儲過程被放在master 數據庫中,但是仍可以在其它數據庫中對其進行調用,在調用時不必在存儲過程名前加上數據庫名。而且當創建一個新數據庫時,一些系統存儲過程會在新數據庫中被自動創建。用戶自定義存儲過程是由用戶創建并能完成某一特定功能(如查詢用戶所需數據信息)的存儲過程。在本章中所涉及到的存儲過程主要是指用戶自定義存儲過程。

    12.1.2 存儲過程的優點
    ????當利用MS SQL Server 創建一個應用程序時,Transaction-SQL 是一種主要的編程語言。若運用Transaction-SQL 來進行編程,有兩種方法。其一是,在本地存儲Transaction- SQL 程序,并創建應用程序向SQL Server 發送命令來對結果進行處理。其二是,可以把部分用Transaction-SQL 編寫的程序作為存儲過程存儲在SQL Server 中,并創建應用程序來調用存儲過程,對數據結果進行處理存儲過程能夠通過接收參數向調用者返回結果集,結果集的格式由調用者確定;返回狀態值給調用者,指明調用是成功或是失敗;包括針對數據庫的操作語句,并且可以在一個存儲過程中調用另一存儲過程。

    ????我們通常更偏愛于使用第二種方法,即在SQL Server 中使用存儲過程而不是在客戶計算機上調用Transaction-SQL 編寫的一段程序,原因在于存儲過程具有以下優點:

    (1) 存儲過程允許標準組件式編程
    存儲過程在被創建以后可以在程序中被多次調用,而不必重新編寫該存儲過程的SQL 語句。而且數據庫專業人員可隨時對存儲過程進行修改,但對應用程序源代碼毫無影響(因為應用程序源代碼只包含存儲過程的調用語句),從而極大地提高了程序的可移植性。

    (2) 存儲過程能夠實現較快的執行速度
    如果某一操作包含大量的Transaction-SQL 代碼或分別被多次執行,那么存儲過程要比批處理的執行速度快很多。因為存儲過程是預編譯的,在首次運行一個存儲過程時,查詢優化器對其進行分析、優化,并給出最終被存在系統表中的執行計劃。而批處理的Transaction- SQL 語句在每次運行時都要進行編譯和優化,因此速度相對要慢一些。

    (3) 存儲過程能夠減少網絡流量
    對于同一個針對數據數據庫對象的操作(如查詢、修改),如果這一操作所涉及到的 Transaction-SQL 語句被組織成一存儲過程,那么當在客戶計算機上調用該存儲過程時,網絡中傳送的只是該調用語句,否則將是多條SQL 語句,從而大大增加了網絡流量,降低網絡負載。

    (4) 存儲過程可被作為一種安全機制來充分利用
    系統管理員通過對執行某一存儲過程的權限進行限制,從而能夠實現對相應的數據訪問權限的限制,避免非授權用戶對數據的訪問,保證數據的安全。(我們將在14 章“SQLServer 的用戶和安全性管理”中對存儲過程的這一應用作更為清晰的介紹)

    注意:存儲過程雖然既有參數又有返回值,但是它與函數不同。存儲過程的返回值只是指明執行是否成功,并且它不能像函數那樣被直接調用,也就是在調用存儲過程時,在存儲過程名字前一定要有EXEC保留字
    posted on 2007-01-08 10:50 放水老倌 閱讀(4902) 評論(0)  編輯  收藏 所屬分類: 數據庫
    主站蜘蛛池模板: 亚洲欧洲专线一区| 激情内射亚洲一区二区三区| 99亚洲精品卡2卡三卡4卡2卡| 日本XXX黄区免费看| 亚洲日韩在线视频| 2021久久精品免费观看| 亚洲一本之道高清乱码| 无码一区二区三区免费视频 | 美美女高清毛片视频黄的一免费 | 我们的2018在线观看免费高清| 噜噜噜亚洲色成人网站∨| 91免费福利精品国产| 911精品国产亚洲日本美国韩国| 30岁的女人韩剧免费观看| 亚洲伊人色一综合网| 午夜免费福利影院| 三级片免费观看久久| 亚洲人成色777777在线观看| 91久久精品国产免费一区| 久久精品国产亚洲AV蜜臀色欲| 日本一区二区三区免费高清| 亚洲AV成人精品日韩一区| 久久久久国产亚洲AV麻豆| 亚欧免费一级毛片| 亚洲欧美成人综合久久久| 亚洲午夜爱爱香蕉片| 久久久国产精品福利免费| 亚洲伊人久久大香线蕉啊| 免费人成年轻人电影| 欧洲人免费视频网站在线| 国产亚洲中文日本不卡二区| 亚洲成a人一区二区三区| 免费h视频在线观看| 亚洲色大网站WWW永久网站| 亚洲国产日韩成人综合天堂 | 成人影片麻豆国产影片免费观看 | 区三区激情福利综合中文字幕在线一区亚洲视频1 | 黑人粗长大战亚洲女2021国产精品成人免费视频 | 免费看男女下面日出水视频| 女人隐私秘视频黄www免费| 亚洲喷奶水中文字幕电影|