需要从现有的 table 创建一个新的 table

Need to create a new table from existing table

我想用现有的 table 创建一个新的 table,其中 table 名称应该从输入参数传递。 我正在尝试以下代码。

DECLARE @oldTableName nvarchar(50)
DECLARE @newStagingTableName nvarchar(50)
SET @oldTableName='OldTableName'
SET @newStagingTableName ='NewTableName';
SELECT * INTO @newStagingTableName FROM @oldTableName WHERE 1 = 0;  

SQL 服务器在解析此查询时出错。

在线

SELECT * INTO @newStagingTableNameFROM @oldTableName WHERE 1 = 0;

@newStagingTableName 和 FROM

之间没有 space

还要检查 table NewTableName 是否存在?如果是这样,您不能直接通过参数访问它 - 您需要使用动态 SQL - 也许 this 可以帮助

能否请您尝试以下动态 SQL 查询?

DECLARE @oldTableName nvarchar(50)
DECLARE @newStagingTableName nvarchar(50)

SET @oldTableName='OldTableName'
SET @newStagingTableName ='NewTableName'

DECLARE @sqlquery nvarchar(100) = 'SELECT * INTO ' + @newStagingTableName + ' FROM ' + @oldTableName
exec(@sqlquery)

试试这个

DECLARE @oldTableName NVARCHAR(50)
DECLARE @newStagingTableName NVARCHAR(50),
        @sql                 NVARCHAR(100)=''

SET @oldTableName=''
SET @newStagingTableName ='';
SET @sql='select * INTO ' + @newStagingTableName
         + ' FROM ' + @oldTableName + ' WHERE  1 = 0;'

EXEC sp_executesql
  @sql 

这应该可行。 . .

DECLARE @oldTableName nvarchar(50)
DECLARE @newStagingTableName nvarchar(50)
declare @sql nvarchar(max);
SET @oldTableName='oldTableName'
SET @newStagingTableName ='newStagingTableName ';

SET @sql='SELECT * INTO ' +  @newStagingTableName + ' FROM ' + @oldTableName + ' WHERE 1 = 0;' 

exec sp_executesql @sql

编辑: 抱歉我没看到其他人回答了