首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >查找调用函数的所有存储过程

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

Stack Overflow用户
提问于 2010-05-14 18:28:07
回答 5查看 33.7K关注 0票数 22

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

或者如何为用户定义的函数中的参数分配默认值,以便在存储过程调用该函数但没有向该参数传递任何值时,函数采用默认值。

问候,Abhishek jain

EN

回答 5

Stack Overflow用户

发布于 2014-11-19 17:40:38

代码语言:javascript
复制
  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
票数 6
EN

Stack Overflow用户

发布于 2010-05-14 18:35:39

只需使用此过程来查找存储过程中的任何文本。

代码语言:javascript
复制
   CREATE PROCEDURE [dbo].[Find_Text_In_SP]
@StringToSearch varchar(100) 
AS 
   SET @StringToSearch = '%' +@StringToSearch + '%'
   SELECT Distinct SO.Name
   FROM sysobjects SO (NOLOCK)
   INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
   AND SO.Type = 'P'
   AND SC.Text LIKE @stringtosearch
   ORDER BY SO.Name
票数 5
EN

Stack Overflow用户

发布于 2010-05-14 20:51:12

按照hgulyan的建议,在使用SYSCOMMENTS表时需要小心。该表将对象的定义拆分为多行,如果它被拆分到两个条目中,则可能会导致搜索条件丢失。在SQL2005和更高版本中,您可以改用SYSMODULES表。运行以下代码来查看不同之处,并在使用syscomments方法时查找关键字(例如,可能是您的搜索短语)被分成多行的情况。

代码语言:javascript
复制
SELECT  TOP 1000 SO.NAME, SC.TEXT
FROM        SYS.SYSOBJECTS  SO
JOIN        SYS.SYSCOMMENTS SC
    ON      SO.ID = SC.ID
WHERE       SO.TYPE = 'P'
ORDER BY SO.NAME, SC.COLID


SELECT  TOP 1000 SO.NAME, SM.DEFINITION
FROM        SYS.SYSOBJECTS  SO
JOIN        SYS.SQL_MODULES SM
    ON      SO.ID = SM.[OBJECT_ID]
WHERE       SO.TYPE = 'P'
ORDER BY SO.NAME
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2833389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档