SQL SERVER存儲過程語法:
Create PROC [ EDURE ] procedure_name [ ; number ] [ { @parameter data_type } [ VARYING ] [ = default ] [ OUTPUT ] ] [ ,...n ] [ WITH { RECOMPILE | ENCRYPTION | RECOMPILE , ENCRYPTION } ] [ FOR REPLICATION ] AS sql_statement [ ...n ]
一、參數簡介
1、 procedure_name
新存儲過程的名稱。過程名必須符合標識符規則,且對於數據庫及其所有者必須唯一。
要創建局部臨時過程,可以在 procedure_name 前面加一個編號符 (#procedure_name),要創建全局臨時過程,可以在 procedure_name 前面加兩個編號符 (##procedure_name)。完整的名稱(包括 # 或 ##)不能超過 128 個字符。指定過程所有者的名稱是可選的。
2、;number
是可選的整數,用來對同名的過程分組,以便用一條 Drop PROCEDURE 語句即可將同組的過程一起除去。例如,名為 orders 的應用程序使用的過程可以命名為 orderproc;1、orderproc;2 等。Drop PROCEDURE orderproc 語句將除去整個組。如果名稱中包含定界標識符,則數字不應包含在標識符中,只應在 procedure_name 前後使用適當的定界符。
3、@parameter
過程中的參數。在 Create PROCEDURE 語句中可以聲明一個或多個參數。用戶必須在執行過程時提供每個所聲明參數的值(除非定義了該參數的默認值)。存儲過程最多可以有 2100 個參數。
使用@符號作為第一個字符來指定參數名稱。參數名稱必須符合標識符的規則。每個過程的參數僅用於該過程本身;相同的參數名稱可以用在其它過程中。默認情況下,參數只能代替常量,而不能用於代替表名、列名或其它數據庫對象的名稱。
查看本欄目
4、data_type
參數的數據類型。所有數據類型(包括 text、ntext 和 image)均可以用作存儲過程的參數。不過,cursor 數據類型只能用於 OUTPUT 參數。如果指定的數據類型為 cursor,也必須同時指定 VARYING 和 OUTPUT 關鍵字。
說明:對於可以是cursor 數據類型的輸出參數,沒有最大數目的限制。
5、VARYING
指定作為輸出參數支持的結果集(由存儲過程動態構造,內容可以變化)。僅適用於游標參數。
6、default
參數的默認值。如果定義了默認值,不必指定該參數的值即可執行過程。默認值必須是常量或 NULL。如果過程將對該參數使用 LIKE 關鍵字,那麼默認值中可以包含通配符(%、_、[] 和 [^])。
7、OUTPUT
表明參數是返回參數。該選項的值可以返回給 EXEC[UTE]。使用 OUTPUT 參數可將信息返回給調用過程。Text、ntext 和 image 參數可用作 OUTPUT 參數。使用 OUTPUT 關鍵字的輸出參數可以是游標占位符。
8、n
表示最多可以指定 2100 個參數的占位符。
9、{RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION}
RECOMPILE 表明 SQL Server 不會緩存該過程的計劃,該過程將在運行時重新編譯。在使用非典型值或臨時值而不希望覆蓋緩存在內存中的執行計劃時,請使用 RECOMPILE 選項。
ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 Create PROCEDURE 語句文本的條目。使用 ENCRYPTION 可防止將過程作為 SQL Server 復制的一部分發布。
說明:在升級過程中,SQL Server 利用存儲在 syscomments 中的加密注釋來重新創建加密過程。
10、FOR REPLICATION
指定不能在訂閱服務器上執行為復制創建的存儲過程。.使用 FOR REPLICATION 選項創建的存儲過程可用作存儲過程篩選,且只能在復制過程中執行。本選項不能和 WITH RECOMPILE 選項一起使用。
11、AS
指定過程要執行的操作。
12、sql_statement
過程中要包含的任意數目和類型的 Transact-SQL 語句。但有一些限制。
13、 n
是表示此過程可以包含多條 Transact-SQL 語句的占位符。
14、注釋
/*和*/之間的為注釋,可以包含一行和多行的說明文字。
15、 其他說明
存儲過程的最大大小為 128 MB。
二、小注:
存儲過程一般用來完成數據查詢和數據處理操作,所以在存儲過程中不可以使用創建數據庫對象的語句,即在存儲過程中一般不能含有以下語句:
CREATE TABLE ; CREATE VIEW ; CREATE DEFAULT ; CREATE RULE ;CREATE TRIGGER ;CREATE PROCEDURE