代码之家  ›  专栏  ›  技术社区  ›  Saajid Ismail

在SQL Server 2000中删除存储过程的语法是什么?

  •  26
  • Saajid Ismail  · 技术社区  · 14 年前

    简单问题,如标题所示:

    通过首先检查存储过程(SP)是否存在,在SQL Server 2000中删除该存储过程(SP)的语法是什么?

    请提供完整的代码。

    4 回复  |  直到 9 年前
        1
  •  38
  •   Brock Adams    14 年前

    Microsoft建议使用 object_id() 功能,就像这样:

    IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
    DROP PROCEDURE [dbo].[YourProcedure]
    GO
    

    .
    对象() 帮助解决所有者冲突。如果你这样做了
    SELECT name FROM sysobjects WHERE name = 'my_procedure' 您可能会看到许多具有相同名称的不同过程——所有这些都是针对不同的所有者的。

    但是, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]') 如果存在多个同名的过程,则只显示当前所有者/用户的过程。

    但是,始终指定对象所有者(默认为 dbo )这不仅避免了严重的副作用,而且速度也快了一点。

        2
  •  5
  •   Metaphor    11 年前

    不使用系统表的稍微简单的方法:

    IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
    GO
    
        3
  •  3
  •   codykrieger    14 年前

    这样地:

    IF EXISTS (SELECT name FROM sysobjects WHERE name = 'my_procedure' AND type = 'P')
    DROP PROCEDURE my_procedure GO
    

    希望有帮助!

        4
  •  -2
  •   Syakur Rahman    9 年前

    SQL SERVER 2008 ,如果要删除存储过程,只需编写以下命令….

    DROP PROC Procedure_name
    DROP PROC dbo.spInsertUser
    

    希望它有帮助。

    推荐文章