복붙노트

[SQL] 어떻게 2008 SQL Server의 사용자 정의 테이블 형식의 존재를 확인?

SQL

어떻게 2008 SQL Server의 사용자 정의 테이블 형식의 존재를 확인?

나는 사용자 정의 테이블 형식을 가지고있다. 나는 OBJECT_ID (이름, 유형) 함수를 사용하여 패치에서 편집하기 전에 그것의 존재를 확인하시기 바랍니다.

열거에서 어떤 종류의 사용자 정의 테이블 형식에 전달해야?

N'U '사용자 정의 테이블이없는 작업, 즉 IF OBJECT_ID 않는 경우 (N'MyType처럼'N'U ')가 NULL이 아닌

해결법

  1. ==============================

    1.당신은 sys.types 또는 사용 TYPE_ID에서 찾아보실 수 있습니다 :

    당신은 sys.types 또는 사용 TYPE_ID에서 찾아보실 수 있습니다 :

    IF TYPE_ID(N'MyType') IS NULL ...
    

    그냥주의 : 사용 TYPE_ID는 유형이 테이블 유형인지 확인하지 않습니다 - 그 이름의 유형이 존재 그냥. 그렇지 않은 경우의 GBN 쿼리는 아마 더 좋다.

  2. ==============================

    2.

    IF EXISTS (SELECT * FROM sys.types WHERE is_table_type = 1 AND name = 'MyType')
        --stuff
    

    sys.types ... 그들은 그렇게는 sys.objects에되지 않습니다 스키마 범위 개체가 없습니다

    업데이트 2013 년 월

    당신도 TYPE_ID을 사용할 수 있습니다

  3. ==============================

    3.

    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)
    );
    
  4. ==============================

    4.NOT "is_table_type" "is_user_defined"예 나를 위해 작동에 따라, 제발 노트

    NOT "is_table_type" "is_user_defined"예 나를 위해 작동에 따라, 제발 노트

    IF TYPE_ID(N'idType') IS NULL
    CREATE TYPE [dbo].[idType] FROM Bigint NOT NULL
    go
    
    IF not EXISTS (SELECT * FROM sys.types WHERE is_user_defined = 1 AND name = 'idType')
    CREATE TYPE [dbo].[idType] FROM Bigint NOT NULL
    go
    
  5. ==============================

    5.또한 시스템 table_types 볼 수 있습니다

    또한 시스템 table_types 볼 수 있습니다

    IF EXISTS (SELECT *
               FROM   [sys].[table_types]
               WHERE  user_type_id = Type_id(N'[dbo].[UdTableType]'))
      BEGIN
          PRINT 'EXISTS'
      END 
    
  6. from https://stackoverflow.com/questions/2495119/how-to-check-existence-of-user-define-table-type-in-sql-server-2008 by cc-by-sa and MIT license