What is the syntax to drop a Stored Procedure in SQL Server 2000?
A slightly simpler method without going to system tables:
IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
Not for SQL Server 2000, but starting with SQL Server 2016, you can use the IF EXISTS syntax:
DROP PROCEDURE IF EXISTS [sp_ProcName]
Microsoft recommended using the object_id()
function, like so:
IF EXISTS (select * from dbo.sysobjects where id = object_id(N'[dbo].[YourProcedure]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP PROCEDURE [dbo].[YourProcedure]
GO
.object_id()
helps resolve owner conflicts. If you doSELECT name FROM sysobjects WHERE name = 'my_procedure'
, you may see many different procedures with the same name -- all for different owners.
But, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]')
will only show you the one for the current owner/user, if more than one procedure by that name exists.
Still, always specify the object owner (default is dbo
). Not only does this avoid nasty side-effects, it's a little faster too.