Каков синтаксис для удаления хранимой процедуры в SQL Server 2000? - PullRequest
26 голосов
/ 02 августа 2010

Простой вопрос, как следует из названия:

Каков синтаксис для удаления хранимой процедуры (SP) в SQL Server 2000, сначала проверив, существует ли SP?

Пожалуйста, предоставьте полный код.

Ответы [ 4 ]

40 голосов
/ 03 августа 2010

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

.
object_id() помогает разрешать конфликты владельцев.Если вы выполните
SELECT name FROM sysobjects WHERE name = 'my_procedure', вы можете увидеть много разных процедур с одним и тем же именем - все для разных владельцев.

Но, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]') покажет вам только одну для текущего владельца / пользователя, если существует более одной процедуры с таким именем.

Тем не менее, всегда указывайте владельца объекта (по умолчанию dbo).Это не только позволяет избежать неприятных побочных эффектов, но и немного быстрее.

5 голосов
/ 18 сентября 2013

Немного более простой метод без перехода к системным таблицам:

IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO
3 голосов
/ 02 августа 2010

Как это:

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

Надеюсь, это поможет!

0 голосов
/ 26 марта 2016

В SQL SERVER 2008, если вы хотите удалить хранимую процедуру, просто напишите следующую команду ....

DROP PROC Procedure_name
DROP PROC dbo.spInsertUser

Надеюсь, это поможет ..

...