使用sp_rename动态更改SQL Server中的多个表名

问题描述 投票:0回答:1

我正在尝试使用Microsoft SQL Server Management Studio 2018更改Microsoft SQL Server 2017 Standard版中的一系列表名。

我一直在传输的代码基于以下代码:

use DatabaseX

declare @RunRW varchar(MAX)
declare @ArVC varchar(4)
declare @StartAr smallint
declare @SlutAr smallint
declare @Ar smallint

set @StartAr = 2000
set @SlutAr = 2018
set @Ar = @StartAr

while @Ar <= @SlutAr
begin
    set @ArVC = cast(@Ar as varchar)

    set @RunRW = '
        exec sp_rename ''TMP_Table_Name_' + @ArVC + ',''Table_Name_' + @ArVC + ''

    exec (@RunRW)

    set @Ar = @Ar + 1
end

我在exec sp_rename语法中尝试了不同数量的引号。似乎我可以通过更改这些来解决故障。上面的示例代码提供以下错误消息:

Msg 102,第15级,状态1,第2行'TMP_Table_Name_2000'附近的语法不正确。

我也尝试过四个退出而不是两个退出。

[另一种尝试是按原样动态运行存储的过程,而没有@RunRW变量。那也不起作用。

我做错了什么/丢失了,或者无法通过动态代码运行sp_rename

sql-server dynamic ssms sp-rename
1个回答
1
投票

您错过了两个表名的结尾引号。如果您更改:

set @RunRW = '
        exec sp_rename ''TMP_Table_Name_' + @ArVC + ',''Table_Name_' + @ArVC + ''

成为

set @RunRW = '
    exec sp_rename ''TMP_Table_Name_' + @ArVC + ''',''Table_Name_' + @ArVC + ''''

它将消除错误。

© www.soinside.com 2019 - 2024. All rights reserved.