sp_addtype (Transact-SQL)
適用於:SQL Server
建立別名數據類型。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 請改用 CREATE TYPE 。
語法
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,沒有預設值,而且可以是下列其中一個值:
- bigint、int、smallint 和 tinyint
- binary、 varbinary(n)和 image
- bit
- char(n)、nchar(n)、varchar(n)、nvarchar(n)、**text 和 ntext
- datetime 和 smalldatetime
- decimal(s、 P) 和 numeric(s, P)
- float 和 real
- money 和 smallmoney
- sql_variant
- uniqueidentifier
所有包含內嵌空格或標點符號的參數都需要引號。 如需可用數據類型的詳細資訊,請參閱 數據類型。
n
表示所選數據類型長度的非負整數。
P
非負整數,表示可儲存的小數字數總數上限,同時儲存在小數點的左邊和右邊。 如需詳細資訊,請參閱 十進位和數值。
s
非負整數,表示小數點右邊可儲存的小數位數上限,而且必須小於或等於有效位數。 如需詳細資訊,請參閱 十進位和數值。
[ @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 和 CREATE TABLE。
[ @owner = ] N'owner'
僅供參考之用。 不支援。 我們無法保證未來的相容性。
傳回碼值
0
(成功) 或 1
(失敗)。
結果集
無。
備註
別名數據類型名稱在資料庫中必須是唯一的,但具有不同名稱的別名數據類型可以具有相同的定義。
執行 sp_addtype
會建立出現在特定資料庫的目錄檢視中的 sys.types
別名數據類型。 如果別名資料類型必須在所有新的使用者定義資料庫中使用,請將它新增至 model
。 建立別名數據類型之後,您可以在 或 ALTER TABLE
中使用CREATE TABLE
別名數據類型,並將預設值和規則系結至別名數據類型。 使用 sp_addtype
所建立的所有純量別名數據類型都包含在架構中 dbo
。
別名數據類型會繼承資料庫的預設定序。 別名類型之數據行和變數的定序定義於 Transact-SQL CREATE TABLE
、 ALTER TABLE
和 DECLARE @<local_variable>
語句中。 變更資料庫的預設定序僅適用於型別的新數據行和變數;它不會變更現有集合的定序。
重要
基於回溯相容性目的, 公用 資料庫角色會自動授與 REFERENCES
使用 sp_addtype
所建立之別名數據類型的許可權。 請注意,使用 CREATE TYPE
語句而不是 sp_addtype
建立別名數據類型時,不會發生這類自動授與。
無法使用 SQL Server 時間戳、數據表、xml、varchar(max)、nvarchar(max)或 varbinary(max) 數據類型來定義別名數據類型。
權限
需要db_owner或db_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. 建立其他別名數據類型
下列範例會針對國內和國際電話和傳真編號建立兩個別名數據類型 telephone
fax
和 。
USE master;
GO
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL';
GO
EXEC sp_addtype fax, 'varchar(24)', 'NULL';
GO