存储过程重命名其他存储过程!

时间:2011-07-14 17:53:43

标签: sql sql-server stored-procedures rename

我正在使用SQL Server,我一直在开发一个存储过程来重命名(实际上,在其名称中添加一个前缀)其他存储过程。我一直试图这样做,但我不知道为什么我会收到这个错误。

看看我的代码:

DECLARE @_currentProcedure AS VARCHAR(300)
DECLARE @_newProcedure AS VARCHAR(300)

SET @_currentProcedure = '[dbo].[' + @ProcedureName + ']'
SET @_newProcedure = @Prefx + @ProcedureName 

-- check if this procedure exists
IF (EXISTS(SELECT * 
           FROM [dbo].[sysobjects] 
           WHERE ID = object_id(@_currentProcedure ) 
              AND OBJECTPROPERTY(id, N'IsProcedure') = 1
         )) 
BEGIN
        -- rename it (doesn't work)
        EXEC sp_rename @_currentProcedure , @_newProcedure , 'OBJECT'
        GO

END

当我尝试编译时,我收到错误说

  

'OBJECT'附近的语法错误
  'END'附近的语法错误

像这样。

我该怎么做才能解决此错误并使此程序有效!?

谢谢!

2 个答案:

答案 0 :(得分:3)

那么GO应该结束......那应该是

BEGIN 
EXEC sp_rename @_currentProcedure , @_newProcedure , 'OBJECT'  
END
GO 

答案 1 :(得分:0)

_newProcedure是从@Procedure名称设置的,所以它缺少括号和你添加到_currentProcedure的dbo.

尝试:

 SET @_newProcedure = '[dbo].[' + @Prefx + @ProcedureName + ']'