J'ai un type de table défini par l'utilisateur. Je veux vérifier son existence avant de modifier un patch en utilisant la OBJECT_ID(name, type)
fonction.
Que doit-on passer type
de l' énumération pour les types de table définis par l'utilisateur?
N'U'
comme pour la table définie par l'utilisateur ne fonctionne pas, c'est-à-dire IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
la source
la source
IF OBJECT_ID(N'MyType', 'TT') IS NULL
sans succès, mais votre solution a fonctionné.SELECT name FROM sys.objects WHERE type = 'TT'
sys.types ... ils ne sont pas des objets à portée de schéma et ne seront donc pas dans sys.objects
Mise à jour, mars 2013
Vous pouvez utiliser TYPE_ID aussi
la source
Schema_ID
s'agit en fait de l'un des attributs de la table sys.types auquel vous avez lié; c'est pourquoi ils peuvent être référencés comme [dbo]. [MyUDType] ). Néanmoins, vous avez raison de dire que les types UD ne sont pas répertoriés dans sys.objects, et donc pas accessibles par OBJECT_ID (). (Pour une raison quelconque, sys.objects n'est pas une liste exhaustive d'objets à portée de schéma.)sys.objects
directement mais il y a une ligne pour chacun d'euxla source
Les exemples suivants fonctionnent pour moi, veuillez noter "is_user_defined" NOT "is_table_type"
la source
Vous pouvez également utiliser la vue table_types système
la source