1.
drop procedure
create procedure2.alter procedure 
 Transact-SQL 参考  
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是表示最多可指定 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 语句。但有一些限制。有关更多信息,请参见 CREATE PROCEDURE 中的"sql_statement 限制"。 n是表示该过程中可以包含多条 Transact-SQL 语句的占位符。有关更多信息,请参见 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 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