web-dev-qa-db-fra.com

Quelle est la syntaxe pour supprimer une procédure stockée dans SQL Server 2000?

Question simple, comme son titre l'indique:

Quelle est la syntaxe pour supprimer une procédure stockée (SP) dans SQL Server 2000, en vérifiant d'abord que le SP existe)?

Veuillez fournir le code complet.

27
Saajid Ismail

Microsoft a recommandé d'utiliser la fonction object_id(), comme ceci:

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() aide à résoudre les conflits de propriétaire. Si tu fais
SELECT name FROM sysobjects WHERE name = 'my_procedure', Vous pouvez voir de nombreuses procédures différentes avec le même nom - toutes pour des propriétaires différents.

Mais, SELECT * FROM sysobjects WHERE id = object_id(N'[my_procedure]') ne vous montrera que celle du propriétaire/utilisateur actuel, s'il existe plusieurs procédures de ce nom.

Toujours, spécifiez toujours le propriétaire de l'objet (la valeur par défaut est dbo). Non seulement cela évite les effets secondaires désagréables, mais c'est aussi un peu plus rapide.

42
Brock Adams

Une méthode un peu plus simple sans passer par les tables système:

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

Comme ça:

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

J'espère que cela pourra aider!

3
codykrieger