【问题标题】:Get current stored procedure name?获取当前存储过程名称?
【发布时间】:2018-09-15 11:49:16
【问题描述】:

在我的存储过程中,我总是有一个注释行来测试我的存储过程:

/*
EXEC [schema].[uspNameOfSP]
*/

我想稍微简化一下,这样我就可以将它复制粘贴到其他存储过程中,而不必每次都更改名称。我想做这样的事情:

/*
EXEC @thisStoredProceduresName
*/

这样的事情可能吗?

【问题讨论】:

  • 提示:使用适当的软件(MySQL、Oracle、DB2 等)和版本标记数据库问题很有帮助,例如sql-server-2014。语法和功能的差异通常会影响答案。请注意,tsql 缩小了选择范围,但没有指定数据库。
  • @MatSnow 这不会真正起作用,我不同意它是重复的。 OP 希望名称自动出现在静态存储过程的主体中,而不是在执行过程时输出。
  • @noClue 那么您的需求是否发生了变化,现在您也需要参数列表吗?如果您只需要所有过程及其参数的列表,您可以随时通过查询 sys.objectssys.parameters 轻松得出此信息,甚至可以从中构建示例调用 - 这都在元数据中,您不需要必须手动记录您创建的所有内容。
  • Ummm....名称和所有参数不是很明显吗?它就在“创建程序”之后。奇怪的是,所有参数都在那之后。在程序正文中添加评论有什么好处?所有信息都在那里。
  • @SeanLange 我已经担心它不存在,我只是想确保我没有错过任何东西。 Stackoverflow 在这一点上只是一种保证。

标签: sql-server sql-server-2008 tsql ssms


【解决方案1】:

你不能。

原因是当您执行它来测试时,您只是选择并执行那一行代码,因此它在执行时不是存储过程的一部分或在其中。

【讨论】:

    【解决方案2】:

    我认为这是一个坏主意,但它可以满足您的需求。

    USE some_db;
    GO
    
    CREATE PROCEDURE /*EXECUTE */ usp_Proc AS
    BEGIN
      SELECT 1;
    END
    

    我很怀疑,但我运行了 CREATE 语句,然后编写了 proc 脚本,注释的 EXECUTE 语句卡住了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 2016-12-21
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      相关资源
      最近更新 更多