Query the contents of stored procedures on SQL Server

☆樱花仙子☆ 提交于 2019-12-20 11:05:57

问题


I am exploring a legacy database system and have very little knowledge of its internals. I would like to find all the stored procedures that invoke another stored procedure A.

How best to do this?

Can I write something like this pseudocode:

select name from AllStoredProcedures as Asp where Asp.TextualContent contains 'A'

Asp.TextualContent means the actual SQL contained in the SP.


回答1:


SELECT
    OBJECT_NAME(OBJECT_ID),
    definition
FROM
    sys.sql_modules
WHERE
    objectproperty(OBJECT_ID, 'IsProcedure') = 1
AND definition LIKE '%Foo%' 



回答2:


For SQL Server 2005/2008:

SELECT  s.name SchemaName
        ,o.name RoutineName
        ,o.[type] RoutineType
        ,procs.*
FROM    sys.sql_modules procs
INNER JOIN sys.objects o ON procs.object_id = o.object_id 
INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE   procs.[definition] LIKE '%A%'
--AND       o.[type] = 'P' --'P' for stored procedures



回答3:


This query will retrieve the textual definition of stored procedures and filter using a simple wildcard.

For 2000 (untested, but IIRC it's the right table):

select p.[type]
      ,p.[name]
      ,c.[text]
  from sysobjects p
  join syscomments c
    on p.object_id = c.id
 where p.[type] = 'P'
   and c.[text] like '%foo%'

For 2005:

select p.[type]
      ,p.[name]
      ,c.[text]
  from sys.objects p
  join sys.syscomments c
    on p.object_id = c.id
 where p.[type] = 'P'
   and c.[text] like '%foo%'

For 2005 and 2008+

select p.[type]
      ,p.[name]
      ,c.[definition]
  from sys.objects p
  join sys.sql_modules c
    on p.object_id = c.object_id
 where p.[type] = 'P'
   and c.[definition] like '%foo%'



回答4:


Try This only one statement can solve your problem..

SELECT OBJECT_DEFINITION(OBJECT_ID(N'dbo.myStoredProc'))

or

SELECT @objname= OBJECT_DEFINITION(OBJECT_ID(N'dbo.myStoredProc'))
print @objname


来源:https://stackoverflow.com/questions/7686469/query-the-contents-of-stored-procedures-on-sql-server

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!