sp_addtype (Transact-SQL)

別名データ型を作成します。

ms189784.note(ja-jp,SQL.90).gif重要 :
この機能は、将来のバージョンの Microsoft SQL Server では削除される予定です。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE TYPE を使用してください。

トピック リンク アイコンTransact-SQL 構文表記規則

構文

sp_addtype [ @typename = ] type, 
    [ @phystype = ] system_data_type 
    [ , [ @nulltype = ] 'null_type' ] ;

引数

[ **@typename=** ] type

別名データ型の名前を指定します。データ型の名前は、識別子の規則に従っている必要があり、各データベース内で一意であることが必要です。type のデータ型は sysname で、既定値はありません。

[ **@phystype=**\] system_data_type

別名データ型の基になる物理データ型 (SQL Server で提供されるデータ型) を指定します。system_data_type のデータ型は sysname で、既定値はありません。次のいずれかの値を指定できます。

bigint

binary(n)

bit

char(n)

datetime

decimal

float

image

int

money

nchar(n)

ntext

numeric

nvarchar(n)

real

smalldatetime

smallint

smallmoney

sql_variant

text

tinyint

uniqueidentifier

varbinary(n)

varchar(n)

空白または区切り記号を含むパラメータはすべて、引用符で囲む必要があります。使用できるデータ型の詳細については、「データ型 (Transact-SQL)」を参照してください。

n

選択したデータ型の長さを示す、負以外の整数を指定します。

P

小数点の左側と右側に格納できる 10 進数の最大合計桁数を示す、負以外の整数を指定します。詳細については、「decimal 型と numeric 型 (Transact-SQL)」を参照してください。

s

小数点の右側に格納できる 10 進数の最大桁数を示す、負以外の整数を指定します。有効桁数以下であることが必要です。詳細については、「decimal 型と numeric 型 (Transact-SQL)」を参照してください。

[ @nulltype = ] 'null_type'

別名データ型で NULL 値をどのように取り扱うかを指定します。null_type のデータ型は varchar(8) で、既定値は NULL です。'NULL'、'NOT NULL'、または 'NONULL' のように、値を単一引用符で囲んで指定してください。null_typesp_addtype で明示的に定義されていない場合は、既定の NULL 値の許容属性が使用されます。既定の NULL 値の許容属性を確認するには、GETANSINULL システム関数を使用します。この設定は、SET ステートメントまたは ALTER DATABASE を使用して変更できます。NULL 値の許容属性は、明示的に定義してください。@phystype** が bit 型で、@nulltype** が指定されない場合、既定値は NOT NULL になります。

ms189784.note(ja-jp,SQL.90).gifメモ :
null_type パラメータは、このステートメントで指定したデータ型に対する既定の NULL 値の許容属性を定義するものです。ただし別名データ型を使用してテーブルを作成する際に NULL 値の許容属性を明示的に定義した場合は、このパラメータで定義した NULL 値の許容属性よりも優先されます。詳細については、「ALTER TABLE (Transact-SQL)」および「CREATE TABLE (Transact-SQL)」を参照してください。

結果セット

なし

解説

別名データ型の名前は、データベース内で一意であることが必要ですが、異なる名前の別名データ型で同じ定義を使用することは可能です。

sp_addtype を実行すると、別名データ型が作成され、特定のデータベースの sys.types カタログ ビューに表示されます。別名データ型をすべての新しいユーザー定義データベース内で使用できるようにする必要がある場合は、model に追加してください。作成した別名データ型は、CREATE TABLE または ALTER TABLE で使用できます。別名データ型にデフォルトやルールをバインドすることもできます。sp_addtype を使用して作成したすべてのスカラ別名データ型は、dbo スキーマに格納されます。

別名データ型は、データベースの既定の照合順序を継承します。別名データ型の列と変数の照合順序は、Transact-SQL の CREATE TABLE、ALTER TABLE、DECLARE @local_variable ステートメントで定義されます。データベースの既定の照合順序を変更すると、該当するデータ型の新しい列と変数にだけ新しい照合順序が適用されます。既存の列と変数の照合順序は変更されません。

ms189784.security(ja-jp,SQL.90).gifセキュリティ メモ :
旧バージョンとの互換性のため、データベース ロール public には自動的に、sp_addtype を使用して作成した別名データ型の REFERENCES 権限が与えられます。sp_addtype ではなく CREATE TYPE ステートメントを使用して別名データ型を作成した場合は、自動的に権限が与えられないことに注意してください。

SQL Server timestamptablexmlvarchar(max)nvarchar(max)、または varbinary(max) 型を使用して別名データ型を定義することはできません。

権限

db_owner 固定データベース ロールまたは db_ddladmin 固定データベース ロールのメンバシップが必要です。

戻り値

0 (成功) または 1 (失敗)

A. NULL 値を許容しない別名データ型を作成する

次の例では、SQL Server の varchar 型を基にした ssn (social security number : 社会保障番号) という別名データ型を作成します。ssn 型は、11 桁の社会保障番号 (999-99-9999) を格納する列で使用されます。この列で NULL 値は許容されません。

varchar(11) には区切り記号 (かっこ) が含まれているため、単一引用符で囲みます。

USE master;
GO
EXEC sp_addtype ssn, 'varchar(11)', 'NOT NULL';
GO

B. NULL 値を許容する別名データ型を作成する

次の例では、NULL 値を許容する、datetime 型に基づく birthday という別名データ型を作成します。

USE master;
GO
EXEC sp_addtype birthday, datetime, 'NULL';

C. 追加の別名データ型を作成する

次の例では、国内および海外用の電話番号と FAX 番号の両方に対して、telephonefax という 2 つの別名データ型を追加作成します。

USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO

参照

関連項目

データベース エンジンのストアド プロシージャ (Transact-SQL)
CREATE TYPE (Transact-SQL)
CREATE DEFAULT (Transact-SQL)
CREATE RULE (Transact-SQL)
sp_bindefault (Transact-SQL)
sp_bindrule (Transact-SQL)
sp_droptype (Transact-SQL)
sp_rename (Transact-SQL)
sp_unbindefault (Transact-SQL)
sp_unbindrule (Transact-SQL)
システム ストアド プロシージャ (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手