转贴 borland eco delphi ocl 查询

 我们假定有两个类,其中一个是person,另一个是每个人工作的部门类department,两者之间的关系是person 0..* ------department 0..1,person类中有name:string,telephone:string,birthday:datetime;department类有name:string

我们试着来做一些查询:

person(类中的所有成员) 因为eco 中person类事实上是映射到person 数据表的,ocl语句中person是指的类,select 语句中person指的是表。
person.allinstances  相当于select * from person
person.allinstances->size 相当于select count(*) from person
person.allinstances->select(name='张三') 相当于select * from person where name='张三'
person.allinstances.birthday 相当于select birthday from person
person.allinstances->select(birthday>=#1997-01-01) 相当于select * from person where birthday>=#1997-01-01
person.allinstances->select(birthday.indaterange(#1975-01-01,#1995-01-01))下面我就不作比方了indaterange相当于between;
person.allinstances.formatdatetime('d mmmm yyyy')显示特定的日期格示如 9 december 1995是上面的一种对应显示
person.allinstances.name.concat( ' some text')与
person.allinstances.name+'some text'是一致的,相当于select name+'some text ' from person
person.allinstances.department 返回的是一个对象,指的是它对应的部门是哪一个,在sql语句中应无对应功能。

department.allinstances.person.birthday 是指所有部门中的所有人员的生日
department.allinstances->collect(person) 所有部门的所有成员,不重复的。
department.allinstances->collect(person)->collect(birthday)所有部门所有成员的生日集合。
department.allinstances->collect(person->size)
每一个部门中人员总数集合,有点类似于select语句中的group by 的味道
person.allinstances->orderby(birthday)不用说,是排序的结果
person.allinstances->orderdescending(birthday)倒序
person.allinstances->first返回第一条
person.allinstances->orderby(name)->last 姓名排序后的最后一条
person.allinstances->at(2)第二条记录
person.allinstances->subsequence(2,6)第二条到第六条
person.allinstances->select(name.sqllike('%张%'))姓名中含姓张的所有人%为通配符

阅读更多
上一篇不行了。搞不下去了。不知道如何修改数据。。。。希望高人指点
下一篇分页存储过程
想对作者说点什么? 我来说一句

Borland Delphi 6.0 - 7.0 破解教程

2012年06月26日 5.68MB 下载

Borland Delphi v6.0

2017年03月15日 182.59MB 下载

没有更多推荐了,返回首页

关闭
关闭