預存程序概述

來源:互聯網
上載者:User
在大型資料庫系統中,預存程序和觸發器具有很重要的作用。無論是預存程序還是觸發器,都是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保留字

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.