답변:
sys.types를 보거나 TYPE_ID를 사용할 수 있습니다.
IF TYPE_ID(N'MyType') IS NULL ...
주의 사항 : type_id를 사용하면 유형이 테이블 유형 인지 확인할 수 없으며 해당 이름의 유형 만 존재합니다. 그렇지 않으면 gbn의 쿼리가 더 좋습니다.
SELECT name FROM sys.objects WHERE type = 'TT'
IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
--stuff
sys.types ... 그들은 스키마 범위의 객체가 아니므로 sys.objects에 있지 않습니다.
2013 년 3 월 업데이트
sys.objects
직접적으로 나열되지는 않았지만 이들 각각에 대한 행이 있습니다
IF EXISTS(SELECT 1 FROM sys.types WHERE name = 'Person' AND is_table_type = 1 AND SCHEMA_ID('VAB') = schema_id)
DROP TYPE VAB.Person;
go
CREATE TYPE VAB.Person AS TABLE
( PersonID INT
,FirstName VARCHAR(255)
,MiddleName VARCHAR(255)
,LastName VARCHAR(255)
,PreferredName VARCHAR(255)
);
IF OBJECT_ID(N'MyType', 'TT') IS NULL
성공 하지 않고 노력 했지만 솔루션이 효과가있었습니다.