Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
修改过程。
ALTER PROCEDURE [ owner.]procedure-name procedure-definition
procedure-definition : CREATE PROCEDURE syntax
ALTER PROCEDURE [ owner.]procedure-name SET HIDDEN
ALTER PROCEDURE [ owner.]procedure-name RECOMPILE
ALTER PROCEDURE 语句必须包括整个新过程。可使用 PROC 作为 PROCEDURE 的同义词。
语法 1 除第一个单词不同外,ALTER PROCEDURE 语句的语法与 CREATE PROCEDURE 语句的语法相同。Watcom 和 Transact-SQL 方言过程都可以使用 ALTER PROCEDURE 进行变更。
使用 ALTER PROCEDURE,函数上的现有权限会保持不变。如果执行 DROP PROCEDURE,紧接执行 CREATE PROCEDURE,则会重新指派执行权限。
语法 2 使用 SET HIDDEN 对关联过程的定义进行模糊处理,使之不可读。可以卸载该过程,然后将其重装到其它数据库中。
如果使用 SET HIDDEN,则使用调试程序进行调试不会显示过程定义,也无法通过过程分析获得过程定义。
不能将语法 2 和语法 1 组合起来。
此设置是不可逆的。建议将原始过程定义保留在数据库之外。
语法 3 使用 RECOMPILE 语法重新编译存储的过程。当重新编译一个过程时,存储在目录中的定义被重新分析,其语法也被验证。对于生成结果集但不包含 RESULT 子句的过程,数据库服务器会尝试确定过程结果集的特点,并将信息存储在目录中。如果自过程创建以来,过程所引用的表发生变更,从而添加、删除或重命名了列,这些信息会很有用。
重新编译不会更改过程的定义。可以重新编译使用 SET HIDDEN 子句隐藏其定义的过程,但其定义仍是隐藏的。
必须是过程的所有者或者具有 DBA 权限。
自动提交。
SQL/2008 服务商扩充。ALTER PROCEDURE 是 SQL/2008 标准的可选 SQL 语言功能 F381。但是,在 SQL 标准中,ALTER PROCEDURE 不能用于重新定义存储过程定义,也不支持 Transact-SQL 方言过程。SQL/2008 不包括对 SET HIDDEN 或 RECOMPILE 的支持。