Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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). Это не только предотвращает неприятные побочные эффекты, но и немного быстрее.

Ответ 2

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

IF OBJECT_ID('my_procedure') IS NOT NULL DROP PROCEDURE my_procedure
GO

Ответ 3

Вот так:

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

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

Ответ 4

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

DROP PROC Procedure_name
DROP PROC dbo.spInsertUser

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