代码之家  ›  专栏  ›  技术社区  ›  rory.ap

具有可选参数的存储过程,该参数在SQL Server Management Studio“执行存储过程”或“脚本存储过程”中不显示

  •  2
  • rory.ap  · 技术社区  · 7 年前

    在SQL Server Management Studio(SSMS)中,您可以使用GUI执行存储过程以获得帮助。这可以通过右键单击对象资源管理器中的存储过程并选择“执行存储过程”或“将存储过程作为脚本创建到新的查询编辑器窗口”来实现。

    我有一些用户支持人员使用SSM运行某些SP,我不希望他们提供某些可选参数的值。如果需要的话,我希望在运行SP时能够自己提供它们,而不是用户支持人员。

    我已经标记了SQL Server 2014和2008 R2,以防在SP中设置一些选项。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Lukasz Szozda    7 年前

    您可以用另一个存储过程包装您的存储过程:

    CREATE PROCEDURE dbo.my_orig_proc
        @id INT
       ,@some_param_default INT = 10
    
    AS
    BEGIN
    ...
    END
    

    包装:

    CREATE PROCEDURE dbo.my_wrapper_proc
       @id INT
     AS
     BEGIN
         EXEC dbo.my_orig_proc @id;
     END
    


    另一种方法是添加检查,不允许特定用户覆盖值:

    CREATE PROCEDRUE dbo.my_orig_proc
       @id INT,
       ,@some_param_default INT = 10
    AS
    BEGIN
       IF USER_NAME() = 'user_name' AND @some_param_default <> 10
          RAISERROR('You cannot change @some_param_default value' ,16,1);
    END