探索OQL:面向对象的查询语言实践与应用

需积分: 44 7 下载量 77 浏览量 更新于2024-07-26 1 收藏 839KB PDF 举报
OQL应用指南 OQL(Object Query Language),即对象查询语言,是一种面向对象的查询语言,它在SQL的基础上融入了面向对象编程的概念。与传统的SQL语句相似,OQL通过类名、属性名等面向对象的术语来替代SQL中的表名和列名,以更直观地表达查询意图,最终返回以表格形式呈现的数据。OQL的设计旨在将查询操作与业务对象模型紧密结合,适用于各种场景,包括简单的条件过滤和复杂的报表查询。 在用友U9客户化开发环境中,OQL的应用具有明确的结构和语法规则。基础架构中,一个典型的OQL查询包括以下几个部分: 1. **select** 子句:指定要从对象中选择的属性或字段,如 `select A.DocNo, month(A.ActualCompleteDate), A.Department.Name`,这里列举了文档号、月份和部门名称。 2. **from** 子句:指定查询的对象类型,使用双冒号表示层次结构,如 `from UFIDA::U9::MO::MO::MO as A`,这表示从MO对象中获取数据。 3. **where** 子句:设置查询的条件,如 `where A.Department.Name="车间A"`,筛选出部门名为"车间A"的记录。 4. **groupby** 和 **having** 子句:用于分组并过滤结果集,但在这个例子中未提及。 5. **orderby** 子句:用于对查询结果进行排序,如 `orderby A.ActualCompleteDate`,按照实际完成日期升序排列。 6. **union/unionall**:用于合并多个查询结果,但在这段描述中没有提供实例。 7. **left join**:结合了关联查询,通过外键链接不同的对象,如 `leftjoin[CBO_Department] as A1 on (A.Department = A1.ID)`,以及 `leftjoin[CBO_Department_Trl] as A2`,用于处理多语言或关联数据。 8. **数据权限**:U9系统中的数据权限管理与OQL紧密相关,查询执行时会检查涉及的数据对象是否有相应的访问权限,以确保数据安全。 OQL与SQL虽然在语法上有显著区别,但两者之间存在着清晰的映射关系。理解并掌握OQL有助于开发人员在用友U9的客户化开发中高效地进行数据检索和报表生成。学习者可以通过深入理解OQL的基础构架原理和基本语法,逐步提升在实际项目中的应用能力。
2006-08-21 上传
  OQL.NET 是一套强类型的数据库对象查询语言 (OQL,Object Query Language),和 SQL 以及其它 OQL 不同的是,OQL.NET 基于宿主语言 (基于 C# 和 VB 等原生 .NET 语言而不是字符串)。OQL.NET 兼容 SQL-92 标准。   OQL.NET 对象查询语言具有良好的设计,无需安装插件,您就能在 IDE 中编写 OQL 时获得严谨而正确的上下文帮助。OQL.NET 对象查询语言能一步一步地引导用户写出正确的、具有兼容性的数据库查询语句。   OQL.NET 是完全面向对象的、强类型的数据库查询语言,您编写的 OQL 查询语句随着您的应用程序一起编译。这样,OQL.NET 对象查询语言使您能在编译时发现数据库查询语句的错误,而不是延迟到运行时才进行艰难的除错工作。当数据库的架构改变时,通过(使用Macrobject CodeAuto 等代码生成工具)重新生成查询类代码,再次编译应用程序时,通过编译错误便能发现需要修改的 OQL 语句。   OQL.NET 对象查询语言支持多种数据库,在切换数据库时,无需变更源代码,也无需重新编译。   使用 OQL.NET 对象查询语言能降低 80% 以上的查询语句编写时间,减少 95% 的查询语句调试时间,并且不会带来任何性能损失,同时提高系统的可靠性(一个没有错误查询语句的应用程序)。   使用 OQL.NET 对象查询语言,您可以将一个数据库架构划分为多个子架构,便于进行业务和应用的划分。OQL.NET 对象查询语言提供的映射机制也能够让开发人员为数据对象及其属性重新命名,这样开发人员就可以采用更加易懂易记的名称,使代码更具可读性。   OQL.NET 对象查询语言采用的级联表达式以及基于宿主语言的中缀表达式写法具有很好的可读性,可以和原始 SQL 语句相媲美。并且 OQL.NET 对象查询语言支持将很长的查询语句分开来写,将其公用部分拆解出来,十分类似于功能分解的重构功能(如抽子函数),这样更易读更易维护。 ??OQL.NET 对象查询语言同时支持对象表达式,可以大大简化查询语句的编写。OQL.NET 对象查询语言生成的 SQL 语句不但严谨,并且格式良好。