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
請參閱
參考
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)