LZY'Blog

记录LZY的生活、行程!

« 查看SQL存储过程的定义QAD ERP系统月底开关账作业方法步骤 »

使用ALTER PROCEDURE语句修改SQL存储过程

  修改存储过程可以改变存储过程当中的参数或者语句,可以通过SQL语句中的ALTER PROCEDURE语句实现。虽然删除并重新创建该存储过程,也可以达到修改存储过程的目的,但是将丢失与该存储过程关联的所有权限。

  ALTER PROCEDURE语句用来修改通过执行CREATE PROCEDURE语句创建的过程。该语句修改存储过程时不会更改权限,也不影响相关的存储过程或触发器。

  ALTER PROCEDURE语句的语法格式如下:

ALTER {PROC | PROCEDURE} [schema_name.]procedure_name [;number]
   [{@parameter [type_schema_name.]data_type}
   [VARYING][=default][OUT | PUT]
   ][,...n]
[WITH <procedure_option>[,...n]]
[FOR REPLICATION]
AS
   {<sql_statement>[...n] | <method_specifier>}
<procedure_option>∷=
   [ENCRYPTION]
   [RECOMPILE]
   [EXECUTE_AS_Clause]
<sql_statement>∷=
{[BEGIN] statements [END]}
<method_specifier>∷=
EXTERNAL NAME
assembly_name.class_name.method_name

  ALTER PROCEDURE语句的参数及说明如下表所示。

表 ALTER PROCEDURE语句的参数及说明
参  数 描  述
schema_name 过程所属架构的名称
procedure_name 要更改的过程的名称。过程名称必须符合标识符规则
number 现有可选整数,该整数用来对具有同一名称的过程进行分组,以便可以用一个DROP PROCEDURE语句全部删除它们
@parameter 过程中的参数。最多可以指定2100个参数
[type_schema_name.].data_type 参数及其所属架构的数据类型
VARYING 指定作为输出参数支持的结果集。此参数由存储过程动态构造,并且其内容可以不同。仅适用于游标参数
default 参数的默认值
OUTPUT 指示参数是返回参数
FOR REPLICATION 指定不能在订阅服务器上执行为复制创建的存储过程
AS 过程将要执行的操作
ENCRYPTION 指示数据库引擎会将ALTER PROCEDURE语句的原始文本转换为模糊格式
RECOMPILE 指示SQL Server 2008数据库引擎不会缓存该过程的计划,该过程在运行时重新编译
EXECUTE_AS 指定访问存储过程后执行该存储过程所用的安全上下文
<sql_statement> 过程中要包含的任意数目和类型的Transact-SQL语句。但有一些限制
EXTERNAL NAME assembly_name.class_name.method_name 指定Microsoft .NET Framework程序集的方法,以便CLR存储过程引用。class_name必须为有效的SQL Server标识符,并且必须作为类存在于程序集中。如果类具有使用句点(.)分隔命名空间部分的命名空间限定名称,则必须使用方括号([])或引号("")来分隔类名。指定的方法必须为该类的静态方法

注意

  默认情况下,SQL Server不能执行CLR代码。可以创建、修改和删除引用公共语言运行时模块的数据库对象,不过只有在启用clr enabled选项之后,才能在SQL Server中执行这些引用。若要启用该选项,请使用sp_configure。

  【例】通过ALTER PROCEDURE语句修改名为Proc_Stu的存储过程。

  SQL语句如下:

ALTER PROCEDURE [dbo].[Proc_Stu]
@Sno varchar(10)
AS
SELECT * FROM Student WHERE Sno=@Sno

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Walle Build 100427 |

Copyright 2009-2012 LZY'Blog. | ICP:蜀ICP备05027543号