gpt4 book ai didi

sql - 在 SQL 中重命名表时在表名中使用变量

转载 作者:行者123 更新时间:2023-12-03 02:43:15 24 4
gpt4 key购买 nike

我正在尝试使用下面的代码重命名 SQL Server 2008 R2 中的表;

declare @date varchar(8)
set @date = convert( varchar(8), getdate(), 112)

exec sp_rename 'LM_SM_Billing_and_Send_Data', 'LM_SM_Billing_and_Send_Data_@date'

我的目的是重命名该表并附加当前日期。

select convert( varchar(8), getdate(), 112)

返回20141219

但是当我运行重命名时,它会命名该表;

LM_SM_Billing_and_Send_Data_@date  

而不是插入日期

我想知道是否可以将其重命名为;

LM_SM_Billing_and_Send_Data_20141219

通过使用表名中的变量。

我已经在谷歌上搜索了很多,事情似乎表明使用动态 SQL,但我从未使用过它,并且不确定获取我正在寻找的结果的语法是什么。

最佳答案

您在这里遇到的问题,正如 John Saunders 在他的评论中指出的那样,SQL 不会将变量的值替换为参数。 (字符串插值)

在尝试解决此问题时,您可能遇到的另一个问题是过程调用中的串联。以下内容也将不起作用

exec sp_rename 'LM_SM_Billing_and_Send_Data', 'LM_SM_Billing_and_Send_Data_' + @date

上面也会出错的原因是因为参数可以是变量,也可以是常量,而不是上面所示的表达式。如果我们声明@myNewName,并将所需的值设置到该变量中,那么我们就可以将其传递给过程。

尝试一下:

declare @date varchar(8)
set @date = convert( varchar(8), getdate(), 112)

declare @myNewName varchar(255) = 'LM_SM_Billing_and_Send_Data_' + @date

exec sp_rename 'LM_SM_Billing_and_Send_Data', @myNewName

当人们继续使用 SQL 参数时,这可能是一个很好的引用:http://msdn.microsoft.com/en-us/library/ms189260(v=sql.105).aspx

关于sql - 在 SQL 中重命名表时在表名中使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574816/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com