Sql server 如何在SQL Server 2012中查找普通存储过程中的存储过程名称

Sql server 如何在SQL Server 2012中查找普通存储过程中的存储过程名称,sql-server,tsql,sql-server-2012,Sql Server,Tsql,Sql Server 2012,我有一个简单的存储过程Proc_My_SP: 问题:使用Proc_My_SP,我想打印出Procedure2存储过程-只是名称 如果Proc_My_SP包含对Procedure2、Procedure3和其他程序的多个此类调用,我想逐一列出它们 找出存储过程中的所有存储过程名称并打印它们 编辑 我尝试使用以下方法获取存储过程的文本 DECLARE @SPTEXT NVARCHAR(MAX) SET @SPTEXT = (SELECT ROUTINE_DEFINITION

我有一个简单的存储过程Proc_My_SP:

问题:使用Proc_My_SP,我想打印出Procedure2存储过程-只是名称

如果Proc_My_SP包含对Procedure2、Procedure3和其他程序的多个此类调用,我想逐一列出它们

找出存储过程中的所有存储过程名称并打印它们

编辑

我尝试使用以下方法获取存储过程的文本

DECLARE @SPTEXT NVARCHAR(MAX)

SET @SPTEXT = (SELECT ROUTINE_DEFINITION 
               FROM INFORMATION_SCHEMA.ROUTINES
               WHERE SPECIFIC_NAME = 'Proc_My_SP')
PRINT @SPTEXT

但是从@SPTEXT中,如何查找所有存储过程名称?

您可以尝试以下查询

SELECT NAME AS ObjectName
    ,schema_name(o.schema_id) AS SchemaName
    ,type
    ,o.type_desc
FROM sys.objects o
WHERE o.is_ms_shipped = 0
    AND o.NAME LIKE '%Add%'
    AND type = 'p'
ORDER BY o.NAME

第一个查询将只搜索名称,而第二个查询将搜索SP中的任意内容

编辑


此查询将为您提供从属对象名称。

您可以查询存储过程的文本并找到过程名称,在EXEC word之后找到下一个单词。我已尝试将存储过程的文本存储在@SPTEXT中,但如何从该变量中找到确切的“所有存储过程名称检查编辑”部分我不在其中sql:DCheck this:CREATE TABLE SPs db_name varchar100,name varchar100,object_id int EXEC sp_msforeachdb'USE[?];插入SPs选择?,名称,对象id来自系统程序的“选择*自”SPs@ravishankarchavare请检查我的更新答案,因为我已经检查了答案并给出了预期的结果。我不想从数据库的所有spfrom中搜索storeprocedure,我只想使用一个sp并在其中查找所有storeprocedure名称sp@ravishankarchavare谢谢你接受我的邀请答复使用此查询还可以搜索依赖于表的过程。在这种情况下,您需要排除part或pass xtype='U'所在的位置。
SELECT NAME AS ObjectName
    ,schema_name(o.schema_id) AS SchemaName
    ,type
    ,o.type_desc
FROM sys.objects o
WHERE o.is_ms_shipped = 0
    AND o.NAME LIKE '%Add%'
    AND type = 'p'
ORDER BY o.NAME
SELECT NAME AS ObjectName
    ,schema_name(o.schema_id) AS SchemaName
    ,type
    ,o.type_desc
FROM sys.objects o
WHERE o.is_ms_shipped = 0
    --AND o.NAME LIKE '%Add%'
    AND OBJECT_DEFINITION(object_id) Like '%YourSearchTextHere%'
    AND type = 'p'
ORDER BY o.NAME
SELECT o.name, dependentObject.name
 FROM sysdepends d 
INNER JOIN sysobjects o on d.id = o.id 
INNER JOIN sysobjects dependentObject on d.depid = dependentObject.id
WHERE o.xtype = 'P' AND dependentObject.xtype = 'P'