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


达梦数据库的CLASS类

来源:网络整理 浏览:147次 时间:2020-10-17
达梦数据库的CLASS类

达梦数据库除了支持多种常用的数据类型,还支持CLASS类类型,达梦数据库通过类类型在 DMSQL 程序中实现面向对象编程的支持。类将结构化的数据及对其进行操作的过程或函数封装在一起,允许用户根据现实世界的对象建模,而不必再将其抽象成关系数据。
达梦数据库的类类型分为普通类类型和 JAVA CLASS 类型。达梦文档中的示例除了特别声明,使用的都是普通类类型。
达梦数据库类的定义分为类头和类体两部分,类头完成类的声明;类体完成类的实现。类中可以包括以下内容:

1. 类型定义
在类中可以定义游标、异常、记录类型、数组类型、以及内存索引表等数据类型,在类的声明及实现中可以使用这些数据类型;类的声明中不能声明游标和异常,但是实现中可以定义和使用。

2. 属性
类中的成员变量,数据类型可以是标准的数据类型,可以是在类中自定义的特殊数据类型。

3. 成员方法
类中的函数或过程,在类头中进行声明;其实现在类体中完成;
成员方法及后文的构造函数包含一个隐含参数,即自身对象,在方法实现中可以通过this 或 self 来访问自身对象,self 等价于 this。如果不存在重名问题,也可以直接使用对象的属性和方法。this 和 self 只能在包或对象脚本中调用。

4. 构造函数
构造函数是类内定义及实现的一种特殊的函数,这类函数用于实例化类的对象,构造函数满足以下条件:
1) 函数名和类名相同;
2) 函数返回值类型为自身类。

构造函数存在以下的约束:
1) 系统为每个类提供两个默认的构造函数,分别为 0 参的构造函数和全参的构造函数;
2) 0 参构造函数的参数个数为 0,实例的对象内所有的属性初始化值为 NULL;
3) 全参构造函数的参数个数及类型和类内属性的个数及属性相同,按照属性的顺序依次读取参数的值并给属性赋值;
4) 用户可以自定义构造函数,一个类可以有多个构造函数,但每个构造函数的参数个数必须不同;
5) 如果用户自定义了 0 个参数、或参数个数同属性个数相同的构造函数,则会覆盖相应的默认构造函数。

1、创建普通类CLASS类型
--类头创建
create class mycls
as
type rec_type is record (c1 int, c2 int); --类型声明
id int; --成员变量
r rec_type; --成员变量
--成员函数
function f1(a int, b int) return rec_type;
--用户自定义构造函数
function mycls(id int , r_c1 int, r_c2 int) return mycls;
end;
/

--类体创建
create or replace class body mycls
as
function f1(a int, b int) return rec_type
as
begin
r.c1 = a;
r.c2 = b;
return r;
end;

function mycls(id int, r_c1 int, r_c2 int) return myclsasbegin    this.id = id; --可以使用 this.来访问自身的成员    r.c1 = r_c1; --this 也可以省略    r.c2 = r_c2;    return this; --使用 return this 返回本对象end;

end;
/
达梦数据库的CLASS类

2、使用CLASS类
使用类类型同普通的数据类型一样,可以作为表中列的数据类型,DMSQL 程序语句块中变量的数据类型或过程及函数参数的数据类型。用DMSQL命令窗口执行返回的结果看不到输出的内容,只能看到“DMSQL 过程已成功完成”,最好到DM管理工具里的窗口查询能看到返回结果。
declare
type ex_rec_t is record (a int, b int); --使用一个同结构的类型代替类定义的类型
rec ex_rec_t;
o1 mycls;
o2 mycls;
begin
o1 = new mycls(1,2,3);
o2 = o1; --对象引用
rec = o2.r; --变量对象的成员变量访问
print rec.a; print rec.b;
rec = o1.f1(4,5); --成员函数调用
print rec.a; print rec.b;
print o1.id; --成员变量访问
end;
达梦数据库的CLASS类

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

推荐站点

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

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

    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号