客戶/伺服器開發的主要目的在於將處理資料的程式移動到離資料儘可能近的地方。通過將處理資料的程式從客戶應用程式移動到伺服器,可以降低網路流量,並提高效能和資料的完整性。
要將處理資料的程式移動到離資料更近的地方,最常用的方法之一就是開發儲存體過程。
1、管理預存程序
1.1、create、alter和drop
預存程序是由如下的資料定義語言 (Data Definition Language)命令來管理的:create、alter和drop。
create用於建立預存程序,它是批處理中的第一個命令,批處理的正常結束就意味著預存程序建立成功。drop命令會從資料庫中刪除預存程序,alter命令會將原有的預存程序替換為新的代碼。如果要修改預存程序,最好採用alter方法,而不要使用先刪除,再重建的方式,因為後一種方法會丟失原來預存程序上所有的使用權限設定。
CREATE PROCEDURE CategoryListAS SELECT CategoryName FROM Category
1.2、返回記錄集
預存程序可以返回記錄集。
EXEC CategoryList
1.3、編譯預存程序
對應預存程序的編譯是自動進行的。在第一次執行預存程序的時候,就會對預存程序進行編譯,並將編譯結果儲存在記憶體中。如果重新啟動了伺服器,所有預存程序的編譯結果就全部丟失。只有當再次調用它們時,才會重新對它們進行編譯。
SQL Server使用Master.dbo.SysCacheObjects表來記錄編譯過的對象。要查看編譯過的預存程序,可以運行下面的查詢:
SELECT CASE(C.sql AS CHAR(35)) AS StoreProcedure, cacheobjtype,usecounts AS CountFROM Master.dbo.SysCacheObjects CJOIN Master.dbo.SysDatabases DON C.dbid = D.dbidWHERE D.Name = DB_Name()AND ObjType = 'Proc'ORDER BY StoreProcedure
2、向預存程序傳遞資料
SQL Server預存程序可以使用很多的輸入和輸出參數。
2.1、輸入參數
如果要使用輸入參數向預存程序傳遞資料,可以在create procedure命令中的預存程序名之後列出需要添加的參數。每個參數都必須以@開始,一旦聲明了輸入參數,它就會成為該預存程序中的局部變數。就像聲明局部變數一樣,必須使用合法的資料類型來定義輸入參數。在調用預存程序時,必須為這些輸入變數提供值(除非該輸入變數具有預設值)。