首页 > 解决方案 > 确定字符串在 SQL Server 中的存储过程中存在的次数

问题描述

我必须在所有可用的存储过程中搜索特定字符串的出现SQL Server。我知道我们可以通过使用下面的查询来得到这个。

SELECT OBJECT_NAME(OBJECT_ID) PrcName
FROM sys.sql_modules
WHERE DEFINITION LIKE '%SearchStr%'

但是有没有一种方法可以找出特定字符串在每个存储过程中可用的次数?这是为了估计修改存储过程的工作量。任何帮助都感激不尽。

标签: sql-serversql-server-2008tsql

解决方案


这将按测试工作:

;WITH cte as
(
SELECT OBJECT_NAME(OBJECT_ID) PrcName, OBJECT_ID
FROM sys.sql_modules
WHERE DEFINITION LIKE '%tblNDT%')

select t1.PrcName, (LEN(Definition) - LEN(replace(Definition,'tblNDT',''))) / LEN('tblNDT') Cnt
from cte t1
INNER JOIN sys.sql_modules t2 on t1.object_id = t2.object_id

推荐阅读