Create Procedure 創(chuàng )建存儲過(guò)程的語(yǔ)法規則如下:
CREATE PROC [ EDURE ] procedure_name [ ; number ]
[ { @parameter data_type }
[ VARYING ] [ = default ] [ OUTPUT ]
] [ ,...n ]
[ WITH
{ RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ]
[ FOR REPLICATION ]
AS sql_statement [ ...n ]
各參數的含義如下:
- procedure_name
是要創(chuàng )建的存儲過(guò)程的名字,它后面跟一個(gè)可選項number, 它是一個(gè)整數,用來(lái)區別一組同名的存儲過(guò)程。存儲過(guò)程的命名必須符合命名規則,在一個(gè)數據庫中或對其所有者而言,存儲過(guò)程的名字必須惟一。 - @parameter
是存儲過(guò)程的參數。在Create Procedure 語(yǔ)句中,可以聲明一個(gè)或多個(gè)參數。當調用該存儲過(guò)程時(shí),用戶(hù)必須給出所有的參數值,除非定義了參數的缺省值。若參數的形式以 @parameter=value 出現,則參數的次序可以不同,否則用戶(hù)給出的參數值必須與參數列表中參數的順序保持一致。若某一參數以@parameter=value 形式給出,那么其它參數也必須以該形式給出。一個(gè)存儲過(guò)程至多有1024 個(gè)參數。 - Data_type
是參數的數據類(lèi)型。在存儲過(guò)程中,所有的數據類(lèi)型包括text 和image 都可被用作參數。但是,游標cursor 數據類(lèi)型只能被用作OUTPUT 參數。當定義游標數據類(lèi)型時(shí),也必須對VARING 和OUTPUT 關(guān)鍵字進(jìn)行定義。對可能是游標型數據類(lèi)型的OUTPUT 參數而言,參數的最大數目沒(méi)有限制。 - VARYING
指定由OUTPUT 參數支持的結果集,僅應用于游標型參數。 - Default
是指參數的缺省值。如果定義了缺省值,那么即使不給出參數值,則該存儲過(guò)程仍能被調用。缺省值必須是常數,或者是空值。 - OUTPUT
表明該參數是一個(gè)返回參數。用OUTPUT 參數可以向調用者返回信息。Text 類(lèi)型參數不能用作OUTPUT 參數。 - RECOMPILE
指明SQL Server 并不保存該存儲過(guò)程的執行計劃,該存儲過(guò)程每執行一次都又要重新編譯。 - ENCRYPTION
表明SQL Server 加密了syscomments 表,該表的text 字段是包含有Create procedure語(yǔ)句的存儲過(guò)程文本,使用該關(guān)鍵字無(wú)法通過(guò)查看syscomments 表來(lái)查看存儲過(guò)程內容。 - FOR REPLICATION
選項指明了為復制創(chuàng )建的存儲過(guò)程不能在訂購服務(wù)器上執行,只有在創(chuàng )建過(guò)濾存儲過(guò)程時(shí)(僅當進(jìn)行數據復制時(shí)過(guò)濾存儲過(guò)程才被執行),才使用該選項。FOR REPLICATION與WITH RECOMPILE 選項是互不兼容的。 - AS
指明該存儲過(guò)程將要執行的動(dòng)作。 - Sql_statement
是任何數量和類(lèi)型的包含在存儲過(guò)程中的SQL 語(yǔ)句。
另外應該指出,一個(gè)存儲過(guò)程的最大尺寸為128M, 用戶(hù)定義的存儲過(guò)程必須創(chuàng )建在當前數據庫中。
下面將給出幾個(gè)例子,用來(lái)詳細介紹如何創(chuàng )建包含有各種保留字的存儲過(guò)程。