共用方式為


sp_addtype (Transact-SQL)

建立別名資料類型。

ms189784.note(zh-tw,SQL.90).gif重要事項:
未來的 Microsoft SQL Server 發行版本將不再提供此功能。請避免在新的開發工作中使用此功能,並計劃修改目前使用此功能的應用程式。 請改用 CREATE TYPE

主題連結圖示Transact-SQL 語法慣例

語法

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

引數

[ @typename= ] type

這是別名資料類型的名稱。別名資料類型名稱必須遵照識別碼的規則,且在每個資料庫中必須是唯一的。typesysname,沒有預設值。

[ @phystype=] system_data_type

這是作為別名資料類型之基礎的實體資料類型或 SQL Server 提供的資料類型。system_data_typesysname,沒有預設值,且可以是下列值之一:

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

這是一個非負數整數,它指出可儲存的最大十進位數總數,小數點左右兩側都包括在內。如需詳細資訊,請參閱<decimal 和 numeric (Transact-SQL)>。

s

這是一個非負數整數值,它指出小數點右側所能儲存的最大十進位數,且它必須小於或等於有效位數。如需詳細資訊,請參閱<decimal 和 numeric (Transact-SQL)>。

[ @nulltype = ] 'null_type'

指出別名資料類型處理 Null 值的方式。null_typevarchar(8),預設值是 NULL,且需以單引號括住 ('NULL'、'NOT NULL' 或 'NONULL')。如果 sp_addtype 沒有明確定義 null_type,它會設為目前的預設 Null 屬性。您可以利用 GETANSINULL 系統函數來決定目前的預設 Null 屬性。您可以利用 SET 陳述式或 ALTER DATABASE來調整這項作業。Null 屬性應明確定義。如果 @phystypebit,且沒有指定 @nulltype,則預設值為 NOT NULL。

ms189784.note(zh-tw,SQL.90).gif附註:
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 陳述式中。資料庫的預設定序變更只會套用至該類型的新資料行和變數;它不會改變現有類型的定序。

ms189784.security(zh-tw,SQL.90).gif安全性注意事項:
為了與舊版相容,public 資料庫角色會自動被授與在利用 sp_addtype 建立的別名資料類型上的 REFERENCES 權限。請注意,當利用 CREATE TYPE 陳述式 (而不是 sp_addtype) 建立別名資料類型時,不會發生這類自動授與。

別名資料類型不能利用 SQL Server、timestamptablexmlvarchar(max)nvarchar(max)varbinary(max) 資料類型來定義。

權限

需要 db_owner 中的成員資格,或 db_ddladmin 固定資料庫角色。

範例

A. 建立不允許 Null 值的別名資料類型

下列範例建立一個名為 ssn (社會保險號碼) 的別名資料類型,它以 SQL Server-supplied varchar 資料類型為基礎。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

請參閱

參考

Database Engine 預存程序 (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 協助