除了使用系統提供的數據類型外,用戶還可以根據需要用自定義的數據類型來定義表的列或聲明變量。
7.3.1 用Enterprise Manager 創建用戶自定義數據類型
用Enterprise Manager 創建用戶自定義數據類型的方法是:在Enterprise Manager 中選擇要創建用戶自定義類型的數據庫,在數據庫對象“User Defined Data Types”上單擊右鍵,從開始菜單中選擇“New User Defined Data Type”選項,就會出現如圖7-3 所示的定義用戶自定義數據類型屬性對話框。可以在其中指定要定義的數據類型的名稱、繼承的系統數據類型、是否允許NULL 值等屬性。單擊“確定”按鈕,則添加用戶自定義數據類型對象到數據庫中。
7.3.2 用系統存儲過程Sp_addtype 創建用戶自定義數據類型
系統存儲過程為用戶提供了命令方式創建自定義數據類型的途徑。其語法如下:
sp_addtype [@typename =] type,
[@phystype =] system_data_type
[, [@nulltype =] 'null_type']
[ , [ @owner = ] 'owner_name' ]
各參數說明如下:
[@typename =] type指定用戶定義的數據類型的名稱。 [@phystype =] system_data_type
指定相應的系統提供的數據類型的名稱及定義。不能使用TIMESTAMP 數據類型。當所使用的系統數據類型有額外說明時,需用引號將其括起來,如:‘CHAR(8)’。 [@nulltype =] ‘null_type’
指定用戶自定義的數據類型的NULL 屬性,其值可為‘NULL’ ‘NOT NULL’或 ‘NONULL’。缺省時與系統默認的NULL 屬性相同。 [ @owner = ] 'owner_name' ]
指定用戶自定義的數據類型的所有者。
用戶自定義的數據類型的名稱在數據庫中應是惟一的,但不同名稱的用戶自定義數據類型可以有相同的類型定義。在使用CREATE TABLE 命令時,用戶自定義數據類型的 NULL 屬性可以被改變,但其長度定義不能更改。 例7-9: 定義生日數據類型。
exec sp_addtype birthday, datetime, 'not null'
運行結果如下:
(1 row(s) affected)
Type added.
例7-10:定義身份證號碼數據類型。
exec sp_addtype cardid, 'char(18)', 'not null'
運行結果如下:
(1 row(s) affected)
Type added.
例7-11: 定義地址數據類型。
exec sp_addtype address, 'varchar(100)', 'not null'
運行結果如下:
(1 row(s) affected)
Type added.
7.3.3 刪除用戶自定義數據類型
可以在Enterprise Manager 中選擇用戶自定義類型後,從快捷菜單中選擇“Delete” 選項將其刪除,也可以使用系統存儲過程Sp_droptype 將其刪除。其語法如下:
sp_droptype [@typename =] ‘type’
例7-12:
exec sp_droptype cardid
運行結果如下:
(1 row(s) affected)
(0 row(s) affected)
Type has been dropped.
注意:如果刪除由表或其它數據庫在使用的用戶自定義數據類型,將會被系統拒絕。