如何在t-sql查询中使用变量

时间:2012-09-12 19:49:48

标签: tsql

今天我得到了我的数据库名称:

set @databaseNameTXT = 'NewStat1DB';

然后我将数据插入到右表中:

IF @databaseNameTXT = 'NewStat1DB' 
    BEGIN
        INSERT INTO [NewStat1DB] (wStat_id) values(@wStat_id)
    END

IF @databaseNameTXT = 'NewStat2DB'
    BEGIN
        INSERT INTO [NewStat2DB] (wStat_id) values(@wStat_id)
    END

如何在t-sql中使用变量并运行它,如:

INSERT INTO [@databaseNameTXT](wStat_id)值(@wStat_id)

由于

2 个答案:

答案 0 :(得分:3)

您需要使用dynamic SQL,但需要注意SQL Injection

数据库,模式,表和列名称不能是变量 - 唯一的方法是使用动态SQL。

例如(这很容易受到SQL注入):

sp_executesql 'INSERT INTO [' + @databaseNameTXT + 
                '] (wStat_id) values(' + @wStat_id + ');';

我建议阅读链接文章 - 它是对动态SQL主题的综合处理。

答案 1 :(得分:0)

您可以使用动态SQL:

declare @query nvarchar(max)

set @query = 'INSERT INTO ' + QUOTENAME(@databaseNameTXT) + '(wStat_id) 
                values('+@wStat_id+')'

exec(@query)