以下代码似乎没有搜索整个例程定义。
代码块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/