Каков синтаксис для удаления хранимой процедуры в SQL Server 2000?
Простой вопрос, как следует из названия:
Каков синтаксис для удаления хранимой процедуры (SP) в SQL Server 2000, сначала проверив, что существует SP?
Пожалуйста, укажите полный код.
Ответ 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