首页 > 解决方案 > 获取当前 t-sql 过程名称

问题描述

我有几个 t-sql 程序,名称如 Test;1、Test;2、Test;3 等。

CREATE PROCEDURE [dbo].[Test] ; 1
AS
BEGIN
  SELECT
    OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)

  SET NOCOUNT ON;
END
GO

CREATE PROCEDURE [dbo].[Test] ; 2
AS
BEGIN
  SELECT
    OBJECT_SCHEMA_NAME(@@PROCID) + '.' + OBJECT_NAME(@@PROCID)

  SET NOCOUNT ON;
END
GO

这是用它的版本获得完整过程名称的任何方式吗?

标签: sql-servertsql

解决方案


您可以从sys.numbered_procedures检索该信息。您可以根据 object_id 进行过滤,它会返回过程编号。要获取过程名称,请使用已在使用的相同函数。如果需要,它还会返回 T-SQL 代码。

您还需要使用sys.numbered_procedures_parameters来获取有关这些类型过程的参数的信息。这是必要的,因为它们也可以有不同的参数。

顺便说一句,编号的过程是不推荐使用的功能。因此,不建议使用它。此外,它不适用于更新的功能,例如 CREATE OR ALTER 语句。我强烈警告不要使用编号程序。


推荐阅读