查找所有调用函数的存储过程

问题描述 投票:19回答:6

我如何找出所有正在调用SQL Server 2005中特定用户定义函数的存储过程。

或如何在用户定义的函数中为参数分配无效值,以便当存储过程调用该函数且不将任何值传递给该参数时,该函数将采用默认值。

关于,阿比舍克·in那]

我如何找出所有正在调用SQL Server 2005中的特定用户定义函数的存储过程。或者如何在用户定义函数中为参数分配defult值,以便...

sql sql-server-2005 user-defined-functions
6个回答
28
投票

QUERY sys.sql_modules


5
投票

只需使用此过程即可在存储过程中查找任何文本。


5
投票
  declare @SearchValue as varchar(50)
  set @SearchValue = 'GETUTCDATE'
  SELECT DISTINCT
  s.name+'.'+o.name AS Object_Name,o.type_desc
  FROM sys.sql_modules        m
  INNER JOIN sys.objects  o ON m.object_id=o.object_id
  INNER JOIN sys.schemas  s ON o.schema_id=s.schema_id
  WHERE m.definition Like '%'+@SearchValue+'%'
  AND o.Type='P'  --<uncomment if you only want to search procedures
  ORDER BY 1

1
投票

如hgulyan所建议使用SYSCOMMENTS表时,您应格外小心...该表将对象的定义分成多行,如果该对象在两个条目中分开,则可能会丢失搜索条件。在SQL 2005和更高版本中,可以改用SYSMODULES表。运行以下代码以查看差异,并查找使用syscomments方法将关键字(即-可能是您的搜索短语)分成多行的情况...


0
投票

一种“低技术”使用功能查找所有存储过程的方法是使用Management Studio将所有proc的“生成脚本”“生成”一个文件,然后使用编辑器窗口搜索所需的关键字查找。


0
投票

只需在下面的查询中运行此:

© www.soinside.com 2019 - 2024. All rights reserved.