需要从现有的 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
编辑: 抱歉我没看到其他人回答了
我想用现有的 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
编辑: 抱歉我没看到其他人回答了