Eu tenho um tipo de tabela definido pelo usuário. Quero verificar sua existência antes de editar um patch usando a OBJECT_ID(name, type)
função
O que type
da enumeração deve ser passado para tipos de tabela definidos pelo usuário?
N'U'
como para tabela definida pelo usuário não funciona, ou seja, IF OBJECT_ID(N'MyType', N'U') IS NOT NULL
sql
sql-server
sql-server-2008
tsql
user-defined-types
abatishchev
fonte
fonte
IF OBJECT_ID(N'MyType', 'TT') IS NULL
sem sucesso, mas sua solução funcionou.SELECT name FROM sys.objects WHERE type = 'TT'
sys.types ... eles não são objetos com escopo no esquema, portanto não estarão em sys.objects
Atualização, mar 2013
Você pode usar TYPE_ID demais
fonte
Schema_ID
na verdade, é um dos atributos da tabela sys.types a que você vinculou; é por isso que eles podem ser referenciados como [dbo]. [MyUDType] ) No entanto, você está certo de que os tipos de UD não estão listados em sys.objects e, portanto, não são acessíveis por OBJECT_ID (). (Por alguma razão, sys.objects não é uma lista exaustiva de objetos com escopo de esquema.)sys.objects
diretamente, mas há uma linha para cada um deles #fonte
Os exemplos a seguir funcionam para mim, observe "is_user_defined" NOT "is_table_type"
fonte
Você também pode usar a visualização table_types do sistema
fonte