sp_addtype (Transact-SQL)

適用対象:SQL Server

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

重要

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

Transact-SQL 構文表記規則

構文

sp_addtype
    [ @typename = ] N'typename'
    , [ @phystype = ] N'phystype'
    [ , [ @nulltype = ] 'nulltype' ]
    [ , [ @owner = ] N'owner' ]
[ ; ]

引数

[ @typename = ] N'typename'

@typenameは sysname で、既定値はありません。

別名データ型の名前。 別名データ型名は、識別子規則に従う必要があり、各データベースで一意である必要があります。 typesysname で、既定値はありません。

[ @phystype = ] N'phystype'

別名データ型の基になっている物理データ型 (SQL Server 提供) です。 @phystypeは sysname で、既定値はなく、次のいずれかの値を指定できます。

  • bigintintsmallint、tinyint
  • binaryvarbinary(n)、および image
  • bit
  • char(n)nchar(n)varchar(n)nvarchar(n)、**text、および ntext
  • datetimesmalldatetime
  • decimal(s, P) and numeric(s, P)
  • floatreal
  • moneysmallmoney
  • sql_variant
  • uniqueidentifier

埋め込み空白文字または句読点を含むすべてのパラメーターを囲む引用符が必要です。 使用可能なデータ型の詳細については、「データ型 (Transact-SQL)」を参照してください

  • n

    選択したデータ型の長さを示す負でない整数。

  • P

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

  • s

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

[ @nulltype = ] 'nulltype'

別名データ型で NULL 値をどのように処理するかを指定します。 @nulltypeは varchar(8) で、既定値は NULL、単一引用符 ('NULL''NOT NULL'または'NONULL') で囲む必要があります。

@nulltypeが明示的に定義されていない場合は、現在の既定の null 許容値に設定されます。 システム関数を使用して、 GETANSINULL 現在の既定の null 許容を判断します。 これは、ステートメントを使用SETして調整できます。ALTER DATABASE NULL 値の許容属性は、明示的に定義してください。 @phystypeがビット、@nulltypeが指定されていない場合、既定値は NOT NULL.

Note

@nulltype パラメーターは、このデータ型の既定の null 許容値のみを定義します。 テーブルの作成時に別名データ型を使用するときに null 許容が明示的に定義されている場合は、定義された null 許容よりも優先されます。 詳細については、ALTER TABLE (Transact-SQL) と CREATE TABLE (Transact-SQL) に関するページを参照してください

[ @owner = ] N'owner'

単に情報を示すためだけに特定されます。 サポートされていません。 将来の互換性は保証されません。

リターン コードの値

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

結果セット

ありません。

解説

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

実行中に sp_addtype 、特定のデータベースのカタログ ビューに sys.types 表示される別名データ型が作成されます。 別名データ型をすべての新しいユーザー定義データベースで使用できる必要がある場合は、それを model. エイリアス データ型を作成した後は、そのデータ型を使用 CREATE TABLE するか、エイリアス ALTER TABLEデータ型に既定値と規則をバインドすることもできます。 使用 sp_addtype して作成されるすべてのスカラー エイリアス データ型は、スキーマに dbo 含まれています。

別名データ型は、データベースの既定の照合順序を継承します。 列の照合順序とエイリアス型の変数は、Transact-SQL CREATE TABLEALTER TABLEおよび DECLARE @<local_variable> ステートメントで定義されます。 データベースの既定の照合順序の変更は、型の新しい列と変数にのみ適用されます。既存の照合順序は変更されません。

重要

下位互換性のために、パブリック データベース ロールには、使用してsp_addtype作成された別名データ型に対するアクセス許可が自動的に付与REFERENCESされます。 代わりにsp_addtypeステートメントを使用して別名データ型をCREATE TYPE作成する場合、このような自動許可は行われません。

別名データ型は、SQL Server タイムスタンプ、テーブル、xmlvarchar(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 番号の両方に対してfaxtelephoneさらに 2 つの別名データ型を作成します。

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