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