如果列存在于表中,则重命名该列

Bil*_*lla 2 sql sql-server sql-server-2008

我正在尝试重命名列,如果它存在

GO

IF EXISTS(SELECT 1 FROM sys.columns WHERE [name] = N'MinDuration'
           AND [object_id] = OBJECT_ID(N'Category'))
BEGIN
    sp_RENAME 'Category.MinDuration', 'SingleDuration' , 'COLUMN'
END

GO
Run Code Online (Sandbox Code Playgroud)

但是得到错误 Incorrect syntax near sp_RENAME. Expecting CONVERSATION, DIALOG, DISTRIBUTED or TRANSACTION

如果列中存在列,我该如何重命名?

Gor*_*off 11

先试试吧exec:

IF EXISTS(SELECT 1 FROM sys.columns WHERE [name] = N'MinDuration'
           AND [object_id] = OBJECT_ID(N'Category'))
BEGIN
    EXEC sp_RENAME 'Category.MinDuration', 'SingleDuration' , 'COLUMN'
END;
Run Code Online (Sandbox Code Playgroud)