sp_addtype (Transact-SQL)
建立別名資料型別。
重要事項 |
---|
未來的 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
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_type 是 varchar(8),預設值是 NULL,且需以單引號括住 ('NULL'、'NOT NULL' 或 'NONULL')。如果 sp_addtype 沒有明確定義 null_type,它會設為目前的預設 Null 屬性。您可以利用 GETANSINULL 系統函數來決定目前的預設 Null 屬性。您可以利用 SET 陳述式或 ALTER DATABASE來調整這項作業。Null 屬性應明確定義。如果 @phystype 是 bit,且沒有指定 @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 權限。請注意,當利用 CREATE TYPE 陳述式 (而不是 sp_addtype) 建立別名資料型別時,不會發生這類自動授與。 |
別名資料型別不能利用 SQL Server、timestamp、table、xml、varchar(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. 建立其他別名資料型別
下列範例建立兩個其他的別名資料型別 telephone 和 fax,這兩個資料類型可供國內和國際電話和傳真號碼使用。
USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO
請參閱