我正在尝试编写一个脚本,该脚本将从现有表中选择一个新表。 catch是表名,需要是原始表名和表示日期时间的字符串值的组合。这就是我一直在尝试和不同的变种。然而,我最终得到的是一个名为newtableName的表。或者错误取决于我是否使用SELECT * INTO dbo。@ newtableName FROM dbo.ClientAppSetting或SELECT * INTO dbo.newtableName FROM dbo.ClientAppSetting。
非常感谢任何帮助或指导。
DECLARE @extension varchar(25)
DECLARE @tableName varchar(100)
DECLARE @newtableName varchar(100)
SET @tableName = 'ClientAppSetting'
SELECT convert(varchar(25), getdate(), 120) AS extension
SELECT CONCAT (@tableName, @extension )AS newtableName
SELECT * INTO dbo.newtableName FROM dbo.ClientAppSetting
答案 0 :(得分:2)
您需要使用动态SQL来实现此目的。你可以这样做:
DECLARE @extension varchar(25)
DECLARE @tableName varchar(100)
DECLARE @newtableName varchar(100)
DECLARE @sql varchar(1000)
SET @tableName = 'ClientAppSetting'
SELECT @extension = replace(replace(replace(replace(convert(varchar(25), getdate(), 120),'-',''),' ',''),':',''),'.','')
SELECT @newtableName = @tableName +'_' + @extension
set @sql = 'select * into ' + @newtableName + ' from ' + @tableName
exec(@sql)