sp_addtype (Transact-SQL)

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

重要な注意事項重要

この機能は、将来のバージョンの 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_type が sp_addtype で明示的に定義されていない場合は、既定の NULL 値の許容属性が使用されます。既定の NULL 値の許容属性を確認するには、GETANSINULL システム関数を使用します。この設定は、SET ステートメントまたは ALTER DATABASE を使用して変更できます。NULL 値の許容属性は、明示的に定義してください。@phystypebit 型で、@nulltype が指定されない場合、既定値は NOT NULL になります。

    注意

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

戻り値

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

結果セット

なし

説明

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

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

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

セキュリティに関する注意セキュリティに関する注意

旧バージョンとの互換性のため、データベース ロール public には自動的に、sp_addtype を使用して作成した別名データ型の REFERENCES 権限が与えられます。sp_addtype ではなく CREATE TYPE ステートメントを使用して別名データ型を作成した場合は、自動的に権限が与えられないことに注意してください。

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

権限

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

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 番号の両方に対して、telephone と fax という 2 つの別名データ型を追加作成します。

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