SQL 2005 - 搜索存储过程中的文本(并非搜索所有文本)

标签 sql sql-server sql-server-2005 sql-server-2008 stored-procedures

以下代码似乎没有搜索整个例程定义。

代码块1:

select top 50 * from information_schema.routines
where routine_definition like '%09/01/2008%' and specific_Name like '%NET'

代码块2:

SELECT ROUTINE_NAME, ROUTINE_DEFINITION FROM INFORMATION_SCHEMA.ROUTINES 
WHERE ROUTINE_DEFINITION LIKE '%EffectiveDate%' AND ROUTINE_TYPE='PROCEDURE' and ROUTINE_NAME like '%NET'

我知道这些 SQL 语句在大多数情况下都有效。问题是这样的:当我为“EffectiveDate”运行此命令时,该“EffectiveDate”埋藏在一些存储过程中的 ~800 行处,这些存储过程永远不会出现在结果中。就好像“喜欢”只能搜索那么深。

有什么解决这个问题的建议吗?

我想在整个存储过程中搜索指定的文本。

谢谢!

最佳答案

select * 
FROM   INFORMATION_SCHEMA.ROUTINES 
WHERE  OBJECTPROPERTY(OBJECT_ID(SPECIFIC_NAME),'IsMSShipped') =0 
       and OBJECT_DEFINITION(OBJECT_ID(SPECIFIC_NAME)) like '%EffectiveDate%' 
       AND ROUTINE_TYPE='PROCEDURE'
       AND ROUTINE_NAME like '%NET'

改用对象定义。

关于SQL 2005 - 搜索存储过程中的文本(并非搜索所有文本),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1217930/

相关文章:

java - 分布式 Web 应用程序中的缓存 - 复杂查询用例

sql - 将行与列值进行比较

c# - 将 List<int> 作为查询参数传递给 SQL Server

php - 通知 : Array to string conversion in

mysql - 在 MySQL 中计算组合 ID,然后将其存储为库存

更新中的 MySQL Join 子句

sql-server - 我需要删除存储过程中声明的表变量吗?

database - 从数据库的所有表中删除所有记录

sql - 如何在 SQL Server 2005 中获取 (One Before Last) 行

sql - 如何将这两条SQL语句结合起来呢?