| 
 
                          
                            | 
  | 
 
 
 自定义数据类型站点:爱心种子小博士 关键字:自定义数据类型
 
 
 
 
 
 |  | 自定义数据类型 
 除了使用系统提供的数据类型外,用户还可以根据需要用自定义的数据类型来定义表的列或声明变量。
 
 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 ]
 各参数说明如下:
 
 
例7-9: 定义生日数据类型。[@typename =] type指定用户定义的数据类型的名称。
[@phystype =] system_data_type指定相应的系统提供的数据类型的名称及定义。不能使用TIMESTAMP 数据类型。
当所使用的系统数据类型有额外说明时,需用引号将其括起来,如:‘CHAR(8)’。
[@nulltype =] ‘null_type’指定用户自定义的数据类型的NULL 属性,其值可为‘NULL’ ‘NOT NULL’或
‘NONULL’。缺省时与系统默认的NULL 属性相同。
[ @owner = ] owner_name ]指定用户自定义的数据类型的所有者。
 用户自定义的数据类型的名称在数据库中应是惟一的,但不同名称的用户自定义数据
类型可以有相同的类型定义。在使用CREATE TABLE 命令时,用户自定义数据类型的
NULL 属性可以被改变,但其长度定义不能更改。
 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.
 注意:如果删除由表或其它数据库在使用的用户自定义数据类型,将会被系统拒绝。
 
 |  |  
                            | 
 |  
 |