0

次のコードを書きました。

Declare @DaataBaseName2 varchar(50)

set @DaataBaseName2 = 'LUNDB14644A01'  -- @DaataBaseName
USE @DaataBaseName2  --LUNDB14644A01
GO

次のエラーを受け取りました:

メッセージ 102、レベル 15、状態 1、行 3
'@DaataBaseName2' 付近の構文が正しくありません。

なんで?

4

1 に答える 1

3

動的 SQL を介してコードを実行する必要があります。SQL インジェクション攻撃につながる可能性があるため、動的 SQL には注意する必要があります。

以下は、動的データベースの使用方法の小規模なサンプルです。

Declare @DaataBaseName2 varchar(50),
        @sql nvarchar(Max)
set @DaataBaseName2 = 'master'  -- @DaataBaseName
set @sql = 'USE ' + @DaataBaseName2 + ';' + CHAR(13)
SET @sql = @sql + 'SELECT db_name()'

exec sp_executesql @sql
GO
于 2013-08-09T19:42:16.463 に答える