我有以下代码片段:
DECLARE @uidSecurity NVARCHAR(25),
@sql NVARCHAR(500),
@DBName nvarchar(50)= 'DBNAME',
@SecurityGroup nvarchar(10) = 'NEWGROUP'
declare @Winlogon table (
uidFileNumber nvarchar(25))
select @sql = ' INSERT INTO @Winlogon
SELECT uidFileNumber
FROM [' + @DBName + '].dbo.SERCURE
WHERE code = ''' + @SecurityGroup + ''''
exec sp_executesql @sql
SELECT uidFileNumber FROM @WINLOGON
我正在尝试使用来自另一个数据库的数据填充一个局部变量,该数据将随着代码的每个循环而改变。我的问题是它无法识别@winlogon 表变量在@SQL 语句中被声明。还有另一种方法可以做到这一点吗?
如果我将静态数据库名称传递到代码中,它可以工作,如下所示:
DECLARE @uidSecurity NVARCHAR(25),
@sql NVARCHAR(500),
@sql1 NVARCHAR(500),
@SecurityGroup nvarchar(10) = 'NEWGROUP'
declare @Winlogon table (
uidFileNumber nvarchar(25))
INSERT INTO @Winlogon
SELECT uidFileNumber
FROM [STATICDB].dbo.SERCURE
WHERE code = @SecurityGroup
SELECT uidFileNumber FROM @WINLOGON
但是每次代码使用 while 循环运行时,我都需要通过另一个局部变量传递不同的数据库名称。