0

我写了以下代码:

Declare @DaataBaseName2 varchar(50)

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

我收到以下错误:

消息 102,级别 15,状态 1,第 3 行
“@DataBaseName2”附近的语法不正确。

为什么?

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 回答