Хранимая процедура для переименования другой хранимой процедуры! - PullRequest
0 голосов
/ 14 июля 2011

Я использую 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 ]

3 голосов
/ 14 июля 2011

Хорошо, что GO должно быть в конце .. то есть должно быть

BEGIN 
EXEC sp_rename @_currentProcedure , @_newProcedure , 'OBJECT'  
END
GO 
0 голосов
/ 14 июля 2011

_newProcedure устанавливается из имени @Procedure, поэтому в нем отсутствуют скобки и dbo., добавленные в _currentProcedure.

Попробуйте:

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