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,沒有預設值。

別名數據類型的名稱。 別名數據類型名稱必須遵循標識符的規則,而且在每個資料庫中都必須是唯一的。 類型sysname,沒有預設值。

[ @phystype = ] N'phystype'

實體或 SQL Server 提供的數據類型,其別名數據類型是以該數據類型為基礎。 @phystype是 sysname,沒有預設值,而且可以是下列其中一個值:

  • bigintintsmallint 和 tinyint
  • binaryvarbinary(nimage
  • bit
  • char(n)、nchar(n)、varchar(nnvarchar(n、**text 和 ntext
  • datetimesmalldatetime
  • decimal(s、 P) 和 numeric(sP
  • floatreal
  • moneysmallmoney
  • sql_variant
  • uniqueidentifier

所有包含內嵌空格或標點符號的參數都需要引號。 如需可用數據類型的詳細資訊,請參閱數據類型(Transact-SQL)。

  • n

    表示所選數據類型長度的非負整數。

  • P

    非負整數,表示可儲存的小數字數總數上限,同時儲存在小數點的左邊和右邊。 如需詳細資訊,請參閱 decimal 和 numeric (Transact-SQL)

  • s

    非負整數,表示小數點右邊可儲存的小數位數上限,而且必須小於或等於有效位數。 如需詳細資訊,請參閱 decimal 和 numeric (Transact-SQL)

[ @nulltype = ] 'nulltype'

表示別名數據類型處理 Null 值的方式。 @nulltype為 varchar(8),預設值NULL為 ,且必須以單引號 ('NULL''NOT NULL''NONULL') 括住。

如果未 明確定義@nulltype ,則會將它設定為目前的預設可為 Null。 使用系統函 GETANSINULL 式來判斷目前的預設可為 Null 性。 這可以使用語句或 ALTER DATABASE來調整SET。 應該明確定義 Nullability。 如果@phystype為位,且未指定@nulltype,則預設值為 NOT NULL

注意

@nulltype參數只會定義此數據類型的預設可為 Null。 如果在數據表建立期間使用別名數據類型時明確定義 Null 性,則會優先於定義的可為 Null 性。 如需詳細資訊,請參閱 ALTER TABLE (Transact-SQL)CREATE TABLE (Transact-SQL)

[ @owner = ] N'owner'

僅供參考之用。 不支援。 我們無法保證未來的相容性。

傳回碼值

0 (成功) 或 1 (失敗)。

結果集

無。

備註

別名數據類型名稱在資料庫中必須是唯一的,但具有不同名稱的別名數據類型可以具有相同的定義。

執行 sp_addtype 會建立出現在特定資料庫的目錄檢視中的 sys.types 別名數據類型。 如果別名資料類型必須在所有新的使用者定義資料庫中使用,請將它新增至 model。 建立別名數據類型之後,您可以在 或 ALTER TABLE中使用CREATE TABLE別名數據類型,並將預設值和規則系結至別名數據類型。 使用 sp_addtype 所建立的所有純量別名數據類型都包含在架構中 dbo

別名數據類型會繼承資料庫的預設定序。 別名類型之數據行和變數的定序定義於 Transact-SQL CREATE TABLEALTER TABLEDECLARE @<local_variable> 語句中。 變更資料庫的預設定序僅適用於型別的新數據行和變數;它不會變更現有集合的定序。

重要

基於回溯相容性目的, 公用 資料庫角色會自動授與 REFERENCES 使用 sp_addtype所建立之別名數據類型的許可權。 請注意,使用 CREATE TYPE 語句而不是 sp_addtype建立別名數據類型時,不會發生這類自動授與。

無法使用 SQL Server 時間戳、數據表xmlvarchar(max)、nvarchar(max)varbinary(max) 數據類型來定義別名數據類型。

權限

需要db_ownerdb_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 值的別名數據類型

下列範例會建立名為 birthday 的別名數據類型,datetime以允許 Null 值。

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

C. 建立其他別名數據類型

下列範例會針對國內和國際電話和傳真編號建立兩個別名數據類型 telephonefax和 。

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