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

时间:2019-01-17 05:16:41

标签: sql-server tsql sql-server-2012

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

BEGIN
   DECLARE @Results TABLE (Tid INT PRIMARY KEY);

   INSERT @Results

   EXEC Procedure2 [parameters];
   SET @total 1;

END
SELECT @total

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

如果Proc_My_SP包含对Procedure2Procedure3等的多次调用,我想一一列出

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

已编辑

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

DECLARE @SPTEXT NVARCHAR(MAX)

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

但是从@SPTEXT,我如何找到所有存储过程的名称?

1 个答案:

答案 0 :(得分:2)

您可以尝试以下查询。

package.json

OR

 "scripts": {
    "start": "npm run watch:all",
    "test": "echo \"Error: no test specified\" && exit 1",
    "lite": "lite-server",
    "scss": "node-sass -o css/ css/",
    "watch:scss": "onchange './css/*.scss' -- npm run scss",
    "watch:all": "parallelshell 'npm run watch:scss'"
  }

第一个查询将仅搜索名称,第二个查询将搜索SP中的任何内容。

编辑

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

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