使用动态变量名创建SQL表

ste*_*myu 12 sql t-sql database sql-server dynamic-sql

我想使用变量名创建备份SQL表.

一些东西

DECLARE @SQLTable Varchar(20) 
SET @SQLTable = 'SomeTableName' + ' ' + '20100526' 
SELECT * INTO quotename(@SQLTable)
 FROM SomeTableName
Run Code Online (Sandbox Code Playgroud)

但我得到了

'@SQLTable'附近的语法不正确.

它只是维护小脚本的一部分,所以我不必担心注射.

Joh*_*ock 17

DECLARE @MyTableName nvarchar(20);
DECLARE @DynamicSQL nvarchar(1000);

SET @MyTableName = "FooTable";


SET @DynamicSQL = N'SELECT * INTO ' + @MyTableName + ' FROM BarTable';

EXEC(@DynamicSQL);
Run Code Online (Sandbox Code Playgroud)

  • exec @DynamicSQL应该是:exec(@DynamicSQL); - 没有括号,抛出"name not a valid identifier". (5认同)

Don*_*nie 6

不幸的是,您不能将绑定变量用于表名,列名等.在这种情况下,您必须生成动态SQL并使用exec.


Don*_*Don 5

DECLARE @Script NVARCHAR(MAX);
SET @Script = N'SELECT * INTO SomeTableName_' + N'20100526' + N' FROM SomeTableName';
EXEC sp_executesql @Script
Run Code Online (Sandbox Code Playgroud)

我将日期分开,因为我假设您想为每次运行计算它。