检查DB中是否存在存储过程?

时间:2010-02-01 15:31:17

标签: sql sql-server database stored-procedures

我正在尝试在多个数据库中的存储过程中授予执行权限。问题是这个存储过程可能不在某些数据库中。那么如何编写一个脚本来检查存储过程是否存在于数据库中,以及是否为用户提供了执行权限?

4 个答案:

答案 0 :(得分:5)

许多方法:

1)

IF EXISTS (SELECT name 
       FROM   sysobjects 
       WHERE  name = N'proc1' 
       AND    type = 'P')

2)

IF EXISTS (SELECT * 
           FROM   information_schema.routines
           WHERE  routine_name = 'Proc1')

答案 1 :(得分:4)

试试这个:

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[your_procedure_name]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
BEGIN
  -- Set privileges here
END

答案 2 :(得分:0)

试试这个:

if exists (select 1
      from sysobjects
      where  id = object_id('YourProc')
      and type = 'P')

答案 3 :(得分:0)

检查存储过程是否存在

  IF EXISTS (SELECT * FROM sys.objects 
            WHERE object_id = OBJECT_ID
                 (N'[Schema].[Procedure_Name]') AND type IN (N'P', N'PC'))
  BEGIN
           DROP PROCEDURE [Schema].[Procedure_Name]
           Print('Proceudre dropped => [Schema].[Procedure_Name]')
   END

通过单击以下链接检查IF是否存在触发,功能 http://www.gurujipoint.com/2017/05/check-if-exist-for-trigger-function-and.html