sp_MSforeachdb:仅包含具有结果的数据库的结果

问题描述 投票:5回答:2

我正在使用一个简单的命令运行以下存储过程sp_MSforeachdb。我的问题是如何将结果限制为仅显示至少有1条记录满足命令的数据库:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS83ZU5KWi5wbmcifQ==” alt =“结果样本”>“ >>

这是我的存储过程:

EXECUTE master.sys.sp_MSforeachdb 'USE [?]; 

IF (EXISTS (SELECT * 
                 FROM INFORMATION_SCHEMA.TABLES 
                 WHERE TABLE_NAME = ''Tabs''))
BEGIN

SELECT ''?'' as dbname,T.TabName, T.TabPath
FROM Tabs T
WHERE T.TabID IN (

SELECT Distinct TM.TabID
FROM TabModules TM
WHERE mID IN (
  ...
  )

)
ORDER BY T.TabName
END
'

关于如何修改sp以便不显示结果为空的数据库的任何想法(见图片)?

我正在使用一个简单的命令运行以下存储过程sp_MSforeachdb。我的问题是如何将结果限制为仅显示具有至少1条满足命令的记录的数据库:here'...

sql sql-server-2008 stored-procedures
2个回答
11
投票

首先,请停止使用sp_MSforEachDb。哦,问题(如果需要证明,请参阅here)。


1
投票

您基本上需要另一个IF仅在存在数据的情况下运行select。这是我所做的测试。

© www.soinside.com 2019 - 2024. All rights reserved.