我有多个具有相同架构的数据库。所有数据库都有一个名为Invoices
的表。该表的ID是GUID,因此没有重复项。
无论如何我可以说我有Db1,Db2,... Dbx。 我想知道ID =“XF4G-XF78-2156-7XH8”的发票是什么数据库
如果找到包含该发票的数据库,如何执行foreach语句并退出循环?
答案 0 :(得分:1)
DECLARE @sql NVARCHAR(2000)
DECLARE @lookup NVARCHAR(20) = 'XF4G-XF78-2156-7XH8'
SET @sql = 'IF OBJECT_ID(''[?].dbo.Invoices'') IS NOT NULL SELECT ''?'' FROM [?].dbo.Invoices WHERE ID=''' + @Lookup + ''''
EXEC dbo.sp_MsForEachDb @sql
怎么样? Dbo是假定的所有者。如果这是错误的,请更改为正确的所有者。
感谢您的回答,我做得很好!
DECLARE @sql NVARCHAR(2000)
SET @sql = '
IF OBJECT_ID(''[?].dbo.Invoices'') IS NOT NULL
begin
declare @query NVARCHAR(255)
Select @query = (Select [Id] from [?].dbo.Invoices where [Id] = 'XF4G-XF78-2156-7XH8'')
IF @query IS NOT NULL
begin
print ''Database = '' + ''?''
end
end
'
EXEC dbo.sp_MsForEachDb @sql
现在我知道发票属于哪个数据库了!