Ich habe einen benutzerdefinierten Tabellentyp. Ich möchte seine Existenz überprüfen, bevor ich einen Patch mit der OBJECT_ID(name, type)
Funktion bearbeite .
Was type
aus der Aufzählung sollte für benutzerdefinierte Tabellentypen übergeben werden?
N'U'
wie für benutzerdefinierte Tabelle funktioniert nicht, dh IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
quelle
quelle
IF OBJECT_ID(N'MyType', 'TT') IS NULL
ohne Erfolg zu tun , aber Ihre Lösung hat funktioniert.SELECT name FROM sys.objects WHERE type = 'TT'
sys.types ... sie sind keine Objekte mit Schemabereich und befinden sich daher nicht in sys.objects
Update, März 2013
Sie können mit TYPE_ID zu
quelle
Schema_ID
ist tatsächlich eines der Attribute in der Tabelle sys.types , mit der Sie verknüpft sind. Aus diesem Grund können sie als [dbo] bezeichnet werden. [MyUDType] ). Sie haben jedoch Recht, dass UD-Typen nicht in sys.objects aufgeführt sind und daher von OBJECT_ID () nicht aufgerufen werden können. (Aus irgendeinem Grund ist sys.objects keine vollständige Liste von Objekten mit Schemabereich.)sys.objects
direkt aufgeführt, aber es gibt eine Zeile für jede dieserquelle
Die folgenden Beispiele funktionieren für mich. Bitte beachten Sie "is_user_defined" NOT "is_table_type".
quelle
Sie können auch die Ansicht system table_types verwenden
quelle