2016-08-24 154 views
1

是否可以将sting连接到变量作为表名。如何连接变量和字符串作为表名

例如

DECLARE @ENTITY VARCHAR(50) 
SET @ENTITY = 'NATURAL' 

SELECT * 
INTO @ENTITY+'_COMPLETENESS_NAME' 
FROM TABLE1 

,因为我想创建一个表的结果,我目前使用的MS SQL Server 2014

回答

4

命名[NATURAL_COMPLETENESS_NAME]

你需要使用动态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有着不同寻常的人物。

2

试试这个:

DECLARE @ENTITY VARCHAR(50) 
SET @ENTITY = 'NATURAL' 

EXEC ('SELECT * INTO '+ @ENTITY + '_COMPLETENESS_NAME FROM TABLE1') 
相关问题