創(chuàng)建用戶定義的數(shù)據(jù)類型。
sp_addtype [ @typename = ] type,
[ @phystype = ] system_data_type
[ , [ @nulltype = ] 'null_type' ]
[ , [ @owner = ] 'owner_name' ]
[@typename =] type
用戶定義的數(shù)據(jù)類型的名稱。數(shù)據(jù)類型名稱必須遵照標(biāo)識(shí)符的規(guī)則,而且在每個(gè)數(shù)據(jù)庫中必須是唯一的。type 的數(shù)據(jù)類型為 sysname,沒有默認(rèn)值。
[@phystype =] system_data_type
是用戶定義的數(shù)據(jù)類型所基于的物理數(shù)據(jù)類型或 Microsoft? SQL Server? 提供的數(shù)據(jù)類型(decimal、int 等等)。system_data_type 的數(shù)據(jù)類型是 sysname,沒有默認(rèn)值,可能是這些值之一:
'binary( n )' | image | smalldatetime |
Bit | int | smallint |
'char( n )' | 'nchar( n )' | text |
Datetime | ntext | tinyint |
Decimal | numeric | uniqueidentifier |
'decimal[ ( p [, s ] ) ]' | 'numeric[ ( p [ , s ] ) ]' | 'varbinary( n )' |
Float | 'nvarchar( n )' | 'varchar( n )' |
'float( n )' | real |
如果參數(shù)中嵌入有空格或標(biāo)點(diǎn)符號(hào),則必須用引號(hào)將該參數(shù)引起來。有關(guān)可用的數(shù)據(jù)類型的更多信息,請(qǐng)參見數(shù)據(jù)類型。
[@nulltype =] 'null_type'
指明用戶定義的數(shù)據(jù)類型處理空值的方式。null_type 的數(shù)據(jù)類型為 varchar(8),默認(rèn)值為 NULL,并且必須用單引號(hào)引起來('NULL'、'NOT NULL' 或 'NONULL')。如果沒有用 sp_addtype 顯式定義 null_type,則將其設(shè)置為當(dāng)前默認(rèn)的為空性。使用 GETANSINULL 系統(tǒng)函數(shù)可確定當(dāng)前默認(rèn)的為空性,可以使用 SET 語句或 sp_dboption 對(duì)該為空性進(jìn)行調(diào)整。應(yīng)顯式定義為空性。
說明 null_type 參數(shù)只為該數(shù)據(jù)類型定義默認(rèn)的為空性。如果在創(chuàng)建表的過程中使用用戶定義的數(shù)據(jù)類型時(shí)顯式地定義了為空性,那么該為空性優(yōu)先于已定義好的為空性。有關(guān)更多信息,請(qǐng)參見 ALTER TABLE 和 CREATE TABLE。
[@owner =] 'owner_name'
指定新數(shù)據(jù)類型的創(chuàng)建者或所有者。owner_name 的數(shù)據(jù)類型為 sysname。當(dāng)沒有指定時(shí),owner_name 為當(dāng)前用戶。
0(成功)或 1(失?。?/P>
無
用戶定義的數(shù)據(jù)類型名稱在數(shù)據(jù)庫中必須是唯一的,但是名稱不同的用戶定義的數(shù)據(jù)類型可以有相同的定義。
除非將 master 作為當(dāng)前數(shù)據(jù)庫來執(zhí)行 sp_addtype,否則,執(zhí)行 sp_addtype 會(huì)創(chuàng)建用戶定義的數(shù)據(jù)類型,并且將其添加到某個(gè)特定數(shù)據(jù)庫的 systypes 系統(tǒng)表中。如果想在所有新的用戶定義的數(shù)據(jù)庫中都可以使用這一用戶定義的數(shù)據(jù)類型,請(qǐng)將其添加到 model。在創(chuàng)建了用戶數(shù)據(jù)類型之后,可以在 CREATE TABLE 或 ALTER TABLE 中使用它,也可以將默認(rèn)值和規(guī)則綁定到用戶定義的數(shù)據(jù)類型。
不能使用 SQL Server timestamp 數(shù)據(jù)類型來定義用戶定義的數(shù)據(jù)類型。
執(zhí)行權(quán)限默認(rèn)授予 public 角色。
下面的示例創(chuàng)建一個(gè)名為 ssn(社會(huì)保險(xiǎn)號(hào))的用戶定義數(shù)據(jù)類型,它基于 SQL Server 提供的 varchar 數(shù)據(jù)類型。ssn 數(shù)據(jù)類型用于那些保存 11 位數(shù)字的社會(huì)保險(xiǎn)號(hào) (999-99-9999) 的列。該列不能為 NULL。
請(qǐng)注意,varchar(11) 由單引號(hào)引了起來,這是因?yàn)樗藰?biāo)點(diǎn)符號(hào)(圓括號(hào))。
USE master
EXEC sp_addtype ssn, 'VARCHAR(11)', 'NOT NULL'
下面的示例創(chuàng)建了一個(gè)名為 birthday 的用戶定義數(shù)據(jù)類型(基于 datetime),該數(shù)據(jù)類型允許空值。
USE master
EXEC sp_addtype birthday, datetime, 'NULL'
下面的示例為國內(nèi)及國際電話和傳真號(hào)碼另外創(chuàng)建兩個(gè)用戶定義的數(shù)據(jù)類型 telephone 和 fax。
USE master
EXEC sp_addtype telephone, 'varchar(24)', 'NOT NULL'
EXEC sp_addtype fax, 'varchar(24)', 'NULL'
相關(guān)文章