ALTER PROCEDURE
更改先前通過執行 CREATE PROCEDURE 語句創建的過程
但不會更改權限
也不影響相關的存儲過程或觸發器
有關 ALTER PROCEDURE 語句所用參數的更多信息
請參見 CREATE PROCEDURE
(點擊查看)
語法
ALTER 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
是要更改的過程的名稱
過程名稱必須符合標識符規則
;number
是現有的可選整數
該整數用來對具有同一名稱的過程進行分組
以便可以用一條 DROP PROCEDURE 語句全部除去它們
@parameter
過程中的參數
data_type
是參數的數據類型
VARYING
指定作為輸出參數支持的結果集(由存儲過程動態構造
內容可以變化)
僅適用於游標參數
default
參數的默認值
OUTPUT
表明參數是返回參數
n
是表示最多可指定
個參數的占位符
{RECOMPILE | ENCRYPTION | RECOMPILE
ENCRYPTION}
RECOMPILE 表明 Microsoft® SQL Server
; 不會高速緩存該過程的計劃
該過程將在運行時重新編譯
ENCRYPTION 表示 SQL Server 加密 syscomments 表中包含 ALTER PROCEDURE 語句文本的條目
使用 ENCRYPTION 可防止將過程作為 SQL Server 復制的一部分發布
說明 在升級過程中
SQL Server 利用存儲在 syscomments 中的加密注釋來重新創建加密過程
FOR REPLICATION
指定不能在訂閱服務器上執行為復制創建的存儲過程
使用 FOR REPLICATION 選項創建的存儲過程可用作存儲過程篩選
且只能在復制過程中執行
本選項不能和 WITH RECOMPILE 選項一起使用
AS
過程將要執行的操作
sql_statement
過程中要包含的任意數目和類型的 Transact
SQL 語句
但有一些限制
有關更多信息
請參見 CREATE PROCEDURE 中的
sql_statement 限制
n
是表示該過程中可以包含多條 Transact
SQL 語句的占位符
有關更多信息
請參見 CREATE PROCEDURE
注釋
有關 ALTER PROCEDURE的更多信息
參閱 CREATE PROCEDURE 中的注釋
說明 如果原來的過程定義是用 WITH ENCRYPTION 或 WITH RECOMPILE 創建的
那麼只有在 ALTER PROCEDURE 中也包含這些選項時
這些選項才有效
權限
ALTER PROCEDURE 權限默認授予 sysadmin 固定服務器角色成員
db_owner 和 db_ddladmin 固定數據庫角色成員和過程的所有者且不可轉讓
用 ALTER PROCEDURE 更改的過程的權限和啟動屬性保持不變
示例
下例創建稱為 Oakland_authors 的過程
默認情況下
該過程包含所有來自加利福尼亞州奧克蘭市的作者
隨後授予了權限
然後
當該過程需更改為能夠檢索所有來自加利福尼亞州的作者時
用 ALTER PROCEDURE 重新定義了該存儲過程
USE pubs
GO
IF EXISTS(SELECT name FROM sysobjects WHERE name =
Oakland_authors
AND type =
P
)
DROP PROCEDURE Oakland_authors
GO
Create a procedure from the authors table that contains author
information for those authors who live in Oakland
California
USE pubs
GO
CREATE PROCEDURE Oakland_authors
AS
SELECT au_fname
au_lname
address
city
zip
FROM pubs
authors
WHERE city =
Oakland
and state =
CA
ORDER BY au_lname
au_fname
GO
Here is the statement to actually see the text of the procedure
SELECT o
id
c
text
FROM sysobjects o INNER JOIN syscomments c ON o
id = c
id
WHERE o
type =
P
and o
name =
Oakland_authors
Here
EXECUTE permissions are granted on the procedure to public
GRANT EXECUTE ON Oakland_authors TO public
GO
The procedure must be changed to include all
authors from California
regardless of what city they live in
If ALTER PROCEDURE is not used but the procedure is dropped
and then re
created
the above GRANT statement and any
other statements dealing with permissions that pertain to this
procedure must be re
entered
ALTER PROCEDURE Oakland_authors
WITH ENCRYPTION
AS
SELECT au_fname
au_lname
address
city
zip
FROM pubs
authors
WHERE state =
CA
ORDER BY au_lname
au_fname
GO
Here is the statement to actually see the text of the procedure
SELECT o
id
c
text
FROM sysobjects o INNER JOIN syscomments c ON o
id = c
id
WHERE o
type =
P
and o
name =
Oakland_authors
GO
From:http://tw.wingwit.com/Article/os/xtgl/201311/8567.html