Что синтаксис должен отбросить Хранимую процедуру в SQL Server 2000?

Простой вопрос, как заголовок предполагает:

Что синтаксис должен отбросить Хранимую процедуру (SP) в SQL Server 2000 первой проверкой, что SP существует?

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

28
задан Midhun MP 17 December 2013 в 12:17
поделиться

2 ответа

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

45
ответ дан 28 November 2019 в 03:11
поделиться

Вот так:

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

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

3
ответ дан 28 November 2019 в 03:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: