我正在使用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'附近的语法错误
像这样。
我该怎么做才能解决此错误并使此程序有效!?
谢谢!
答案 0 :(得分:3)
那么GO
应该结束......那应该是
BEGIN
EXEC sp_rename @_currentProcedure , @_newProcedure , 'OBJECT'
END
GO
答案 1 :(得分:0)
_newProcedure是从@Procedure名称设置的,所以它缺少括号和你添加到_currentProcedure的dbo.
。
尝试:
SET @_newProcedure = '[dbo].[' + @Prefx + @ProcedureName + ']'