SQL Server 데이터베이스에서 사용자 정의 유형을 어떻게 나열합니까?

StackOverflow https://stackoverflow.com/questions/54482

  •  09-06-2019
  •  | 
  •  

문제

생성된 모든 사용자 정의 유형을 열거해야 합니다. SQL Server 데이터베이스 CREATE TYPE, 및/또는 이미 정의되었는지 확인합니다.

테이블이나 저장 프로시저를 사용하면 다음과 같은 작업을 수행할 수 있습니다.

if exists (select * from dbo.sysobjects where name='foobar' and xtype='U')
    drop table foobar

그러나 사용자 정의 유형에 해당하는(또는 적절한 대안)을 찾을 수 없습니다!확실히 그 어디에서도 볼 수 없어 sysobjects.

누구든지 나에게 깨달을 수 있습니까?

도움이 되었습니까?

해결책

유형과 UDT는 sys.objects에 표시되지 않습니다.다음을 통해 원하는 것을 얻을 수 있어야 합니다.

select * from sys.types
where is_user_defined = 1

다른 팁

게시물이 오래되었지만 이와 유사한 쿼리를 사용하는 것이 유용하다는 것을 알았습니다.일부 형식이 유용하지 않을 수도 있지만 저는 정규화된 유형 이름을 원했고 열이 순서대로 나열되어 있는지 확인하고 싶었습니다.SUBSTRING 항목을 모두 제거하면 열 이름만 얻을 수 있습니다.

SELECT USER_NAME(TYPE.schema_id) + '.' + TYPE.name      AS "Type Name",
       COL.column_id,
       SUBSTRING(CAST(COL.column_id + 100 AS char(3)), 2, 2)  + ': ' + COL.name   AS "Column",
       ST.name                                          AS "Data Type",
       CASE COL.Is_Nullable
       WHEN 1 THEN ''
       ELSE        'NOT NULL' 
       END                                              AS "Nullable",
       COL.max_length                                   AS "Length",
       COL.[precision]                                  AS "Precision",
       COL.scale                                        AS "Scale",
       ST.collation                                     AS "Collation"
FROM sys.table_types TYPE
JOIN sys.columns     COL
    ON TYPE.type_table_object_id = COL.object_id
JOIN sys.systypes AS ST  
    ON ST.xtype = COL.system_type_id
where TYPE.is_user_defined = 1
ORDER BY "Type Name",
         COL.column_id

jwolly2의 답변을 확장하기 위해 표준 데이터 유형을 포함한 정의 목록을 얻는 방법은 다음과 같습니다.

-- User Defined Type definitions TP 20180124
select t1.name, t2.name, t1.precision, t1.scale, t1.max_length as bytes, t1.is_nullable
from sys.types t1
join sys.types t2 on t2.system_type_id = t1.system_type_id and t2.is_user_defined = 0
where t1.is_user_defined = 1 and t2.name <> 'sysname'
order by t1.name
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top