我写了以下代码:
Declare @DaataBaseName2 varchar(50)
set @DaataBaseName2 = 'LUNDB14644A01' -- @DaataBaseName
USE @DaataBaseName2 --LUNDB14644A01
GO
我收到以下错误:
消息 102,级别 15,状态 1,第 3 行
“@DataBaseName2”附近的语法不正确。
为什么?
我写了以下代码:
Declare @DaataBaseName2 varchar(50)
set @DaataBaseName2 = 'LUNDB14644A01' -- @DaataBaseName
USE @DaataBaseName2 --LUNDB14644A01
GO
我收到以下错误:
消息 102,级别 15,状态 1,第 3 行
“@DataBaseName2”附近的语法不正确。
为什么?
您将不得不通过动态 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