是否可以将sting连接到变量作为表名。
e.g。
DECLARE @ENTITY VARCHAR(50)
SET @ENTITY = 'NATURAL'
SELECT *
INTO @ENTITY+'_COMPLETENESS_NAME'
FROM TABLE1
因此,我想创建一个名为[NATURAL_COMPLETENESS_NAME]
我目前正在使用MS SQL Server 2014
答案 0 :(得分:4)
您需要使用动态SQL:
DECLARE @sql NVARCHAR(max);
SET @sql = '
SELECT *
INTO ' + @ENTITY + '_COMPLETENESS_NAME
FROM TABLE1';
EXEC sp_executesql @sql;
注意:您不能对表名使用参数,因为您不能使用表,列,架构或数据库标识符的参数。为安全起见,您可能希望使用:
SET @sql = '
SELECT *
INTO ' + QUOTENAME(@ENTITY + '_COMPLETENESS_NAME') +
FROM TABLE1';
如果@ENTITY
有不寻常的字符,这可以保护您。
答案 1 :(得分:2)
试试这个:
DECLARE @ENTITY VARCHAR(50)
SET @ENTITY = 'NATURAL'
EXEC ('SELECT * INTO '+ @ENTITY + '_COMPLETENESS_NAME FROM TABLE1')