2

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

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 中使用变量并运行它,例如:

插入 [@databaseNameTXT] (wStat_id) 值(@wStat_id)

谢谢

4

2 回答 2

3

您需要为此使用动态 SQL,尽管您需要小心SQL 注入

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

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

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

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

于 2012-09-12T19:52:27.493 回答
0

您可以为此使用动态 SQL:

declare @query nvarchar(max)

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

exec(@query)
于 2012-09-12T19:52:40.963 回答