使用连接名称使用T-SQL创建新表

时间:2017-11-15 18:04:17

标签: sql sql-server tsql

我正在尝试编写一个脚本,该脚本将从现有表中选择一个新表。 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

1 个答案:

答案 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)