您好,欢迎来到站长目录(28sn.com)!


达梦数据库的自定义类型

来源:网络整理 浏览:215次 时间:2020-10-17
达梦数据库的自定义类型

达梦数据库还可以自己定义类型,用户使用 CREATE TYPE 语句可以定义对象类型、数组类型、嵌套表类型等,如果在对象类型中声明了过程或方法,可以使用 CREATE TYPE BODY 定义这些过程和方法。

1、对象类型
--创建对象类型
create type type_dxlx_test as object(
rpart real,
ipart real,
function plus(x type_dxlx_test) return type_dxlx_test,
function les(x type_dxlx_test) return type_dxlx_test
);
/
达梦数据库的自定义类型

--创建对象类型体
create type body type_dxlx_test as
function plus(x type_dxlx_test) return type_dxlx_test is
begin
return type_dxlx_test (rpart+x.rpart, ipart+x.ipart);
end;
function les(x type_dxlx_test) return type_dxlx_test is
begin
return type_dxlx_test (rpart-x.rpart, ipart-x.ipart);
end;
end;
/
达梦数据库的自定义类型

--建立一张测试表,表中的第二列的列类型为type_dxlx_test对象类型,然后插入表测试
create table tab_dxlx_test (c1 int, c2 type_dxlx_test);
--向表中插入数据
insert into tab_dxlx_test values(1, type_dxlx_test (2,3));
insert into tab_dxlx_test values(2, type_dxlx_test (4,2).plus(type_dxlx_test (2,3)));
--查询表数据
select c2 from tab_dxlx_test;
达梦数据库的自定义类型

2、数据类型
--创建数组类型
create or replace type type_szlx_test as object(
id varchar(20),
incount int,
providerid varchar(20)
);
/

create or replace type arr_type_szlx_test as varray(100) of type_szlx_test;
/
达梦数据库的自定义类型

3、嵌套表类型
--创建对象
create or replace type type_qtblx_test
as object
(
aaz257 number(18),
bic230 varchar2(5),
constructor function type_qtblx_test return self as result
)
not final;
/
达梦数据库的自定义类型

create or replace type body type_qtblx_test
is
constructor function type_qtblx_test return self as result is
begin
return;
end;
end;
/
达梦数据库的自定义类型

--创建嵌套表
create or replace type qtb_type_qtblx_test as table of type_qtblx_test;
/
达梦数据库的自定义类型

4、类型使用规则
1.作为表中列类型或其他类成员变量属性的类型不能被修改,删除时需要指定 CASCADE级联删除,类型中定义的数据类型,其名称只在类型的声明及实现中有效。如果类型内的函数的参数或返回值是类型内的数据类型,或是进行类型内成员变量的复制,需要在 DMSQL 程序中定义一个结构与之相同的类型。根据类型使用方式的不同,对象可分为变量对象及列对象。变量对象指的是在 DMSQL 程 序语句块中声明的类型的变量;列对象指的是在表中类型的列。变量对象可以修改其属性的值而列对象不能。
2.变量对象的实例化,类型的实例化通过 NEW 表达式调用构造函数完成。
3.变量对象的引用,通过‘=’进行的类型变量之间的赋值所进行的是对象的引用,并没有复制一个新的对象。
4.变量对象属性访问,可以通过如下方式进行属性的访问。<对象名>.<属性名>
5.变量对象成员方法调用,成员方法的调用通过以下方式调用: <对象名>.<成员方法名>(<参数>{,<参数>}),如果函数内修改了对象内属性的值,则该修改生效。
6.列对象的插入,列对象的创建是通过 INSERT 语句向表中插入数据完成,插入语句中的值是变量对象,插入后存储在表中的数据即为列对象。
7.列对象的复制,存储在表中的对象不允许对对象中成员变量的修改,通过 into 查询或’=’进行的列到
变量的赋值所进行的是对象的赋值,生成了一个与列对象数据一样的副本,在该副本上进行
的修改不会影响表中列对象的值。
8.列对象的属性访问,通过如下方式进行属性的访问: <列名>.<属性名>
9.列对象的方法调用:<列名>.<成员方法名>(<参数>{,<参数>}),列对象方法调用过程中对类型内属性的修改,都是在列对象的副本上进行的,不会影响列对象的值。

  1. 创建的数组类型和嵌套类型,可以直接在 DMSQL 程序语句块中使用,不必在语句块中声明类型
  2. 用户自定义数据类型可以作为其他用户自定义数据类型的元素类型或成员变量类型;
  3. 只有对象类型可以直接作为表中列的数据类型;其他类型只能作为对象类型中成员变量的类型或类型中嵌套使用的数据类型。但含有索引表类型和游标类型的对象类型也不能作为表中列的数据类型。

5、编译类型和删除类型
1)编译类型:重新对类型进行编译,如果重新编译失败,则将类型置为禁止状态。
alter type type_dxlx_test compile;
2)删除类型:类型的删除分为两种方式:一是类型头的删除,删除类型头则会顺带将类型体一起删除;另外一种是类型体的删除,这种方式只能删除类型体,类型头依然存在。
drop type body type_dxlx_test;
drop type type_dxlx_test cascade;
达梦数据库的自定义类型

推荐站点

  • 我爱发烧音乐我爱发烧音乐

    我爱发烧音乐囊括了从流行音乐到古典音乐多个类型的音乐作品,专栏推荐最新的音乐,提供音乐排名榜单!可供免费线上收听音乐,歌曲流畅,音效极佳! 网站提供的钢琴以及二胡专栏,可供收听者,陶冶情操,改善心情,是难得的轻音乐典藏!

    www.520fs.com
  • 世纪音乐网世纪音乐网

    世纪音乐网是专业的在线音乐试听MP3下载网站。歌曲总计30余万首,收录了网上最新歌曲和流行音乐,DJ舞曲,非主流音乐,经典老歌,劲舞团歌曲,搞笑歌曲,儿童歌曲,英文歌曲等。是您上网听歌的最佳网站。

    www.ssjj.com
  • 怒江大峡谷网怒江大峡谷网

    怒江大峡谷网内容包括:新闻、要闻、怒江报、视频、文化、民俗、人文、音乐、政务、公告、政策等地方信息。

    www.nujiang.cn
  • 杭州网杭州网

      杭州网是杭州地区唯一的新闻门户网站,由中共杭州市委宣传部、杭州日报报业集团和杭州广播电视集团共同组建的杭州网络传媒有限公司运营。

    www.hangzhou.com.cn
  • 深圳在线深圳在线

      深圳在线 www.szol.net是深圳本地最大、最早的地方生活资讯网站之一,网站名“深圳在线www.szol.net”由南方报业传媒集团编辑委员会总编辑、南方日报社总编辑、南方都市报总编辑、南方书画院名誉院长王春芙亲笔题名,深圳在线www.szol.net团队与深圳热线www.szonline.net、奥一网www.oeeee.com都源于全国最早成立于1996年的知名网络公司——深圳万用网。

    www.szol.net

鄂公网安备 42062502000001号