sp_addtype (Transact-SQL)
適用対象:SQL Server
別名データ型を作成します。
重要
この機能は、Microsoft SQL Server の将来のバージョンで削除されます。 新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代わりに CREATE TYPE を 使用してください。
構文
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
char(n)
float
money
numeric
smalldatetime
sql_variant
uniqueidentifier
binary(n)
datetime
image
nchar(n)
nvarchar(n)
smallint
text
varbinary(n)
bit
decimal
int
ntext
real
smallmoney
tinyint
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 許容値に設定されます。 GETANSINULL システム関数を使用して、現在の既定の null 許容を判断します。 これは、SET ステートメントまたは ALTER DATABASE を使用して調整できます。 NULL 値の許容属性は、明示的に定義してください。 @phystypeがビットで、@nulltypeが指定されていない場合、既定値は NOT NULL です。
Note
null_type パラメーターは、このデータ型の既定の null 許容のみを定義します。 テーブルの作成時に別名データ型を使用するときに null 許容が明示的に定義されている場合は、定義された null 許容よりも優先されます。 詳細については、「ALTER TABLE (Transact-SQL)」および「CREATE TABLE (Transact-SQL)」を参照してください。
リターン コードの値
0 (成功) または 1 (失敗)
結果セット
なし
解説
別名データ型の名前は、データベース内で一意であることが必要ですが、異なる名前の別名データ型で同じ定義を使用することは可能です。
sp_addtypeを実行すると、特定のデータベースの sys.types カタログ ビューに表示される別名データ型が作成されます。 すべての新しいユーザー定義データベースで別名データ型を使用できる必要がある場合は、 モデルに追加します。 作成した別名データ型は、CREATE TABLE または ALTER TABLE で使用できます。別名データ型にデフォルトやルールをバインドすることもできます。 sp_addtypeを使用して作成されるすべてのスカラー 別名データ型は、dbo スキーマに含まれています。
別名データ型は、データベースの既定の照合順序を継承します。 別名型の列と変数の照合順序は、Transact-SQL CREATE TABLE、ALTER TABLE、DECLARE @local_variable ステートメントで定義されます。 データベースの既定の照合順序の変更は、型の新しい列と変数にのみ適用されます。既存の照合順序は変更されません。
重要
下位互換性のために、 パブリック データベース ロールには、 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
の別名データ型 (社会保障番号) を作成します。 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 番号の両方に対してfax
、 telephone
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)
フィードバック
フィードバックの送信と表示