How do I find a stored procedure containing ?

后端 未结 20 2113
梦谈多话
梦谈多话 2020-11-28 17:21

I need to search a SQL server 2008 for stored procedures containing where maybe the name of a database field or variable name.

20条回答
  •  悲哀的现实
    2020-11-28 17:52

    Here is the union version that use Losbear made, but modified so that it also outputs the schema name:

    DECLARE @SearchText varchar(1000) = 'searchtext';
    
    SELECT DISTINCT sc.SPECIFIC_SCHEMA as 'Schema', sp.SPName as 'Name'
    FROM (
        (SELECT ROUTINE_NAME SPName
            FROM INFORMATION_SCHEMA.ROUTINES 
            WHERE ROUTINE_DEFINITION LIKE '%' + @SearchText + '%' 
            AND ROUTINE_TYPE='PROCEDURE')
        UNION ALL
        (SELECT OBJECT_NAME(id) SPName
            FROM SYSCOMMENTS 
            WHERE [text] LIKE '%' + @SearchText + '%' 
            AND OBJECTPROPERTY(id, 'IsProcedure') = 1 
            GROUP BY OBJECT_NAME(id))
        UNION ALL
        (SELECT OBJECT_NAME(object_id) SPName
            FROM sys.sql_modules
            WHERE OBJECTPROPERTY(object_id, 'IsProcedure') = 1
            AND definition LIKE '%' + @SearchText + '%')
    ) AS sp
    CROSS APPLY (select SPECIFIC_SCHEMA from INFORMATION_SCHEMA.ROUTINES r where r.ROUTINE_NAME = sp.SPName) sc
    ORDER BY 1
    

提交回复
热议问题