Chinaunix首页 | 论坛 | 博客
  • 博客访问: 664308
  • 博文数量: 789
  • 博客积分: 5000
  • 博客等级: 大校
  • 技术积分: 4985
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-28 09:29
文章分类

全部博文(789)

文章存档

2011年(1)

2008年(788)

我的朋友

分类:

2008-10-28 09:36:28


  ALTER PROCEDURE
  更改先前通过执行 CREATE PROCEDURE 语句创建的过程,但不会更改权限,也不影响相关的过程或触发器。有关 ALTER 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
  
  是表示最多可指定 2.100 个参数的占位符。
  
  {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 语句。但有一些限制。有关更多信息,请参见 中的"sql_statement 限制"。
  n
  
  是表示该过程中可以包含多条 Transact-SQL 语句的占位符。有关更多信息,请参见
  
  
  注释
  有关 ALTER 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
  
【责编:admin】

--------------------next---------------------

阅读(875) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-09-11 10:57:01

sdfsdfsdf

chinaunix网友2009-09-11 10:56:42

d