程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL SERVER存儲過程語法詳解

SQL SERVER存儲過程語法詳解

編輯:關於SqlServer

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
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved