将变量作为完全限定名称传递给SQL查询中的数据库

时间:2009-04-30 09:08:17

标签: sql-server

我想查询SQL Server中的多个数据库,所以我想我可以创建一个名为@DBNAME的变量并将其传递给查询,如下所示(但它不起作用)。

这将在一个循环中,其中DBNAME作为dbid的计数逐步执行..我的计数工作,它打印出@DBNAME作为所有生产数据库..但我不能让它跨多个数据库查询!

IF EXISTS(从@ DBNAME.INFORMATION_SCHEMA.TABLES中选择1

WHERE TABLE_TYPE ='BASE TABLE'和TABLE_NAME ='DataArea')         SELECT'GETIN'AS res ELSE SELECT'aaargh'AS res     --SELECT *来自DataArea AS res ELSE SELECT NULL AS res;

1 个答案:

答案 0 :(得分:6)

你可以使用动态sql这样做

declare @tablename as sysname, @dbname as sysname
select 
@dbname = 'master', 
@tablename = 'dbo.spt_fallback_db'
declare @script nvarchar(4000)
select @script = 'select top 10 * from ' + @dbname + '.' + @tablename
exec sp_executesql @script

根据需要替换您的数据库和表名。只是使用一个表单主文件进行测试。