如果没有要显示的结果,如何避免显示结果窗口?

时间:2019-11-26 10:46:17

标签: sql

我有一个脚本,该脚本在所有可用的数据库(我可以访问的数据库)中搜索过程中的特定文本。

在我的服务器中,有许多数据库(在我的情况下,大约有150个数据库),这意味着即使大多数数据库都没有结果(约90%),我仍可以看到所有数据库的结果。

有什么方法可以避免得到这些空的结果查询?

2 个答案:

答案 0 :(得分:0)

您可以使用下面的代码来检查存储过程在每个数据库中是否包含文本。如果仅在数据库中存在存储过程,则将具有结果集。

CREATE TABLE ##DatabasesContainingSP(dbname sysname, SPName SYSNAME);

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

INSERT INTO ##DatabasesContainingSP
SELECT DISTINCT
       db_name() as dbname, o.name AS Object_Name
  FROM sys.sql_modules m
       INNER JOIN
       sys.objects o
         ON m.object_id = o.object_id
 WHERE m.definition Like ''%ABC%'';
'

IF EXISTS(SELECT * FROM ##DatabasesContainingSP )
begin
SELECT * FROM ##DatabasesContainingSP
end 
GO

IF OBJECT_ID('tempdb..##DatabasesContainingSP' , 'U') IS NOT NULL
   drop TABLE ##DatabasesContainingSP;

答案 1 :(得分:0)

感谢您的快速回复。

我设法通过创建一个表并将插入物添加到此表中来解决此问题,因为在最终生成的表中,该表只显示插入的结果。

>

诚挚的问候, 亚历山大