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 内で変数を使用して実行するには、次のようにします。

INSERT INTO [@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 に答える