转贴 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('%张%'))姓名中含姓张的所有人%为通配符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值