修改存储过程
修改先前通过执行 CREATE PROCEDURE 语句创建的过程。ALTER PROCEDURE 不会更改权限,也不影响相关的存储过程或触发器。但是,当修改存储过程时,QUOTED_IDENTIFIER 和 ANSI_NULLS 的当前会话设置包含在该存储过程中。如果设置不同于最初创建存储过程时有效的设置,则存储过程的行为可能会更改。
语法:
ALTER { PROC | PROCEDURE } [schema_name.] procedure_name [ ; number ]
[ { @parameter [ type_schema_name. ] data_type }
[ VARYING ] [ = default ] [ [ OUT [ PUT ] ] [ ,...n ] [ WITH [ ,...n ] ] [ FOR REPLICATION ] AS { [ ...n ] | } ::= [ ENCRYPTION ] [ RECOMPILE ] [ EXECUTE_AS_Clause ] ::= { [ BEGIN ] statements [ END ] } ::= EXTERNAL NAME assembly_name.class_name.method_name
参数说明:
-
schema_name :过程所属架构的名称。
procedure_name :新存储过程的名称(在架构中必须唯一)。
@ parameter:过程中的参数。可以声明一个或多个参数。(
如果指定了 FOR REPLICATION,则无法声明参数)。
[ type_schema_name. ]
data_type: 参数以及所属架构的数据类型。
VARYING: 指定作为输出参数支持的结果集。该参数由存储过程动态构造,其内容可能发生改变(
仅适用于 cursor 参数)。
default:参数的默认值。
OUTPUT :指示参数是输出参数。
AS: 过程将要执行的操作。
: 过程中要包含的任意数目和类型的 Transact-SQL 语句
RECOMPILE : 指示数据库引擎不缓存该过程的计划,该过程在运行时编译。如果指定了 FOR REPLICATION,则不能使用此选项。
ENCRYPTION :指示 SQL Server 将 CREATE PROCEDURE 语句的原始文本转换为模糊格式。模糊代码的输出在 SQL Server 2005 的任何目录视图中都不能直接显示。
对系统表或数据库文件没有访问权限的用户不能检索模糊文本。该选项对于 CLR 存储过程无效。
EXECUTE AS :指定在其中执行存储过程的安全上下文。
FOR REPLICATION: 指定不能在订阅服务器上执行为复制创建的存储过程。
FOR REPLICATION: 过程将在
sys.objects 和
sys.procedures 中包含
RF 对象类型。
:要包含在过程中的一个或多个 Transact-SQL 语句。
EXTERNAL NAME assembly_name.class_name.method_name:指定 .NET Framework 程序集的方法,以便 CLR 存储过程引用。
class_name 必须为有效的 SQL Server 标识符,并且该类必须存在于程序集中。如果类包含一个使用句点 (
.) 分隔命名空间各部分的限定命名空间的名称,则必须使用方括号 (
[ ]) 或引号 (
" ") 将类名称分隔开。指定的方法必须为该类的静态方法。
删除存储过程
语法:
DROP { PROC | PROCEDURE } { [ schema_name. ] procedure } [ ,...n ]
参数说明:
schema_name :过程所属架构的名称。不能指定服务器名称或数据库名称。
procedure : 要删除的存储过程或存储过程组的名称。
-
如果另一个存储过程调用某个已被删除的存储过程,则显示一条错误消息。但是,如果定义了具有相同名称和参数的新存储过程来替换已被删除的存储过程,那么引用该过程的其他过程仍能成功执行。
不能删除编号过程组内的单个过程;但可删除整个过程组
若要查看过程名称的列表用 sys.objects 目录视图。显示过程定义,用 sys.sql_modules 目录视图。删除某个存储过程时,也将从sys.objects 和 sys.sql_modules 目录视图中删除有关该过程的信息。
删除当前数据库中的 dbo.uspMyProc
存储过程。
DROP PROCEDURE dbo.uspMyProc; GO