INFORMATION_SCHEMA.TABLES カタログビューを使用する
SQL Server 2008 でユーザー定義テーブル型 (UDTT) が存在するかどうかを確認するには、以下のいずれかの方法を使用できます。
方法 1: sys.types システムビューを使用する
SELECT *
FROM sys.types
WHERE name = '<UDTT名>'
AND schema_id = SCHEMA_ID('<スキーマ名>');
このクエリは、指定された名前とスキーマを持つ UDTT が存在するかどうかを確認します。UDTT が存在する場合は、クエリは type_id
列を含む 1 行の結果を返します。
方法 2: sp_describe_type プロシージャを使用する
EXEC sp_describe_type '<UDTT名>', '<スキーマ名>';
方法 3: ISNULL() 関数を使用する
SELECT ISNULL(OBJECT_ID('<UDTT名>', 'UDTT'), 0) AS exists;
例
以下の例では、MyTableType
という名前の UDTT が dbo
スキーマ内に存在するかどうかを確認します。
SELECT ISNULL(OBJECT_ID('MyTableType', 'UDTT'), 0) AS exists;
このクエリは 1
を返すため、MyTableType
という名前の UDTT が存在します。
- 上記の方法は、SQL Server 2008 R2 でも使用できます。
- UDTT が存在するかどうかを確認する他にも、UDTT に関する情報を取得するためにこれらの方法を使用できます。
-- 方法 1: sys.types システムビューを使用する
SELECT *
FROM sys.types
WHERE name = 'MyTableType'
AND schema_id = SCHEMA_ID('dbo');
-- 方法 2: sp_describe_type プロシージャを使用する
EXEC sp_describe_type 'MyTableType', 'dbo';
-- 方法 3: ISNULL() 関数を使用する
SELECT ISNULL(OBJECT_ID('MyTableType', 'UDTT'), 0) AS exists;
説明
- 上記のコードは、3 つの異なる方法で同じことを行っています。
- 方法 1 は、
sys.types
システムビューを使用して UDTT に関する情報を取得します。 - 方法 3 は、
ISNULL()
関数を使用して UDTT が存在するかどうかを直接確認します。
使用方法
- 上記のコードをコピーして、SQL Server Management Studio などのクエリエディタに貼り付けます。
MyTableType
を実際の UDTT 名に置き換えます。dbo
を実際の UDTT スキーマ名に置き換えます。- コードを実行します。
結果
- UDTT が存在する場合は、クエリは 1 行の結果を返します。
SQL Server 2008 でユーザー定義テーブル型が存在するかどうかを確認するその他の方法
前述の方法に加えて、SQL Server 2008 でユーザー定義テーブル型 (UDTT) の存在を確認する方法は他にもいくつかあります。以下に、そのうちのいくつかを紹介します。
方法 4: INFORMATION_SCHEMA.TABLES カタログビューを使用する
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'UDTT'
AND TABLE_NAME = 'MyTableType'
AND TABLE_SCHEMA = 'dbo';
方法 5: sys.system_tables カタログビューを使用する
SELECT *
FROM sys.system_tables
WHERE xtype = 'UDTT'
AND name = 'MyTableType'
AND schema_id = SCHEMA_ID('dbo');
方法 6: CATALOG_PROCEDURE_CACHE カタログビューを使用する
SELECT *
FROM CATALOG_PROCEDURE_CACHE
WHERE OBJECT_TYPE = 'UDTT'
AND OBJECT_NAME = 'MyTableType'
AND SCHEMA_NAME = 'dbo';
- これらの方法は、
sys.types
システムビュー、sp_describe_type
プロシージャ、またはISNULL()
関数よりもパフォーマンスが劣る場合があることに注意してください。 - ただし、これらの方法は、UDTT に関する追加情報も提供できるため、より有益な場合があります。
SQL Server 2008 でユーザー定義テーブル型 (UDTT) の存在を確認するには、さまざまな方法があります。上記の方法は、それぞれ長所と短所があるため、状況に応じて最適な方法を選択する必要があります。
sql sql-server sql-server-2008