电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

ALTER PROCEDURE


发布日期:2018/12/26
 

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

过程中要包含的任意数目和类型的 TransactSQL 语句但有一些限制有关更多信息请参见 CREATE PROCEDURE 中的sql_statement 限制

n

是表示该过程中可以包含多条 TransactSQL 语句的占位符有关更多信息请参见 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 pubsauthors

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 oid ctext

FROM sysobjects o INNER JOIN syscomments c ON oid = cid

WHERE otype = P and oname = 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 recreated the above GRANT statement and any

other statements dealing with permissions that pertain to this

procedure must be reentered

ALTER PROCEDURE Oakland_authors

WITH ENCRYPTION

AS

SELECT au_fname au_lname address city zip

FROM pubsauthors

WHERE state = CA

ORDER BY au_lname au_fname

GO

Here is the statement to actually see the text of the procedure

SELECT oid ctext

FROM sysobjects o INNER JOIN syscomments c ON oid = cid

WHERE otype = P and oname = Oakland_authors

GO

上一篇:如何备份outlook的邮件

下一篇:按需调教,让Vista系统听从自己