用户定义的例程和扩展数据类型
superstores_demo 数据库使用用户定义的例程 (UDR) 和扩展数据类型。 UDR 是由您定义的例程,可在 SQL 语句或其他 UDR 中进行调用。UDR 可返回值, 也可不返回值。
GBase 8s 的数据类型系统是可扩展和灵活的系统,支持创建下列各种数据类型:
• 通过重新定义数据库服务器提供的数据类型的某些行为来扩展现有数据类型。
• 由用户定制的数据类型的定义
如下所示,superstores_demo 数据库在 UDR 中创建单值数据类型 percent:
CREATE DISTINCT TYPE percent AS DECIMAL(5,5); DROP CAST (DECIMAL(5,5) AS percent); CREATE IMPLICIT CAST (DECIMAL(5,5) AS percent);superstores_demo
数据库创建下列命名行类型:
• location 层次结构:
o location_t
o loc_us_t
o loc_non_us_t
• customer 层次结构:
o name_t
o customer_t
o retail_t
o whlsale_t
• orders 表
o ship_t
location_t 定义
location_id SERIALloc_type CHAR(2) company VARCHAR(20) street_addr LIST(VARCHAR(25) NOT NULL) city VARCHAR(25) country VARCHAR(25)
loc_us_t 定义
state_code CHAR(2) zipROW(code INTEGER, suffix SMALLINT) phone CHAR(18)
loc_non_us_t 定义
province_code CHAR(2) zipcode CHAR(9) phone CHAR(15)
name_t 定义 first VARCHAR(15) last VARCHAR(15)
customer_t 定义
customer_num SERIALcustomer_type CHAR(1) customer_name name_tcustomer_loc INTEGER contact_dates LIST(DATETIME YEAR TO DAY NOT NULL) cust_discount percentcredit_status CHAR(1)
retail_t 定义
credit_num CHAR(19) expiration DATE
whlsale_t 定义
resale_license CHAR(15) terms_net SMALLINT
ship_t 定义
date DATE weight DECIMAL(8,2) charge MONEY(6,2) instruct VARCHAR(40)
表层次结构
下图显示如何关联 superstores_demo 数据库的分层表。两个表之间的外键和主键关 系由从 customer.custnum 和 customer.loc 列指向 location.location_id 列的阴影箭 头指示。
图: superstores_demo 表的层次结构





