Vérifier qu'un object (table, procédure stockée) existe

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 514 fois - Téléchargée 31 fois

Contenu du snippet

Il vous est peut être arrivé de vouloir vérifier si une table existe avant d'exécuter une certaine tâche.
Tous les informations concernant les tables, les procédures stockées, les fonctions et autres objets de base de données sont stockées dans la table SYSOBJECTS. Si vous êtes connecté en tant que Utilisateur sa(super admin), vous pourrez la voir dans vos tables. Il faut aussi noter que toutes les infos concernant les champs de vos tables sont dans la table SYSCOLUMNS.
Revenons à notre table SYSOBJECTS, dont les champs NAME et XTYPE vont nous intéresser.
Name nous permettra de rechercher un objet ayant pour nom Name et XTYPE donne le type de la table.
Les types suivants sont disponibles:
C = Contrainte CHECK
D = Valeur par défaut ou contrainte DEFAULT
F = Contrainte FOREIGN KEY
L = Journal
FN = Fonction scalaire
IF = Fonction table en ligne
P = Procédure stockée
PK = Contrainte PRIMARY KEY (de type K)
RF = Procédure stockée de réplication
S = Table système
TF = Fonction table
TR = Déclencheur
U = Table utilisateur
UQ = Contrainte UNIQUE (de type K)
V = Vue
X = Procédure stockée étendue
Pour Trouver un object de façon précise exécutez une requête de sélection dans la table SYSOBJECTS.

Source / Exemple :


--Permet de savoir si une table 'Produits' existe dans notre base de données
Select * from sysobjects where name='Produits' and Xtype='U'

--Permet de savoir si une procédure stockée 'SP_ValeursProduits' existe dans notre BD
Select * from sysobjects where name='SP_ValeursProduits' and Xtype='P'

A voir également

Ajouter un commentaire

Commentaires

Messages postés
14
Date d'inscription
lundi 20 janvier 2003
Statut
Membre
Dernière intervention
15 octobre 2011

Un Grand merci à toi pour cette doc utile
Messages postés
468
Date d'inscription
vendredi 21 février 2003
Statut
Membre
Dernière intervention
30 août 2007
2
il serait peut etre pas trop bete de préciser le SGBDR avec lequel tu travaille...je suppose sql server mais ce n'est pas évident:
-sqlserver
-oracle
-db2
-mysql (lol)
-SYbase
-...

juva

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.