轉貼 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('%張%'))姓名中含姓張的所有人%爲通配符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章