如果满足条件,则更改存储过程

时间:2010-04-20 18:12:29

标签: sql-server tsql stored-procedures

如果条件存在,我希望更改存储过程。如果条件不满足,我想保留存储过程,因此drop / create实际上不是一个选项。

尝试将ALTER PROC的内容放入IF块中会给我带来错误。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

IF (condition)
  EXEC ('ALTER PROC ...')

ALTER / CREATE PROC必须是批次中的第一个,所以这是唯一的方法。除非你这样做

IF NOT (condition)
   RAISERROR('abort connection with high severity', 20, 1)
GO
ALTER PROC ...

GO

答案 1 :(得分:4)

您可以使用NOEXEC设置来执行此操作,但要小心。一旦打开NOEXEC,就必须在脚本结束时将其重新设置为OFF。

IF (CONDITION)
    SET NOEXEC OFF --Enables execution of code (Default)
ELSE 
    SET NOEXEC ON --Disables execution of code
GO
ALTER PROCEDURE MYPROC
AS
--STATEMENTS
GO --END OF ALTER BLOCK
SET NOEXEC OFF --RESTORES NOEXEC SETTING TO ITS DEFAULT