查询语句处理装置和查询语句处理方法制造方法及图纸

技术编号:6875338 阅读:185 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供一种查询语句处理装置和一种查询语句处理方法。其中,查询语句处理装置包括:规则定义模块102,设置对自定义元素进行处理的规则;语法解析模块104,对表达式进行解析,取得其中的自定义元素;规则处理模块106,按照规则对自定义元素进行处理,并使用元素的处理结果组成查询语句。通过本发明专利技术,通过预定的规则,将表达式的元素转换成当前数据库可识别的形式,能够使表达式适用于任何数据库。

【技术实现步骤摘要】

本专利技术涉及计算机
,具体而言,涉及一种查询语句处理装置和一种查询语句处理方法。
技术介绍
在数据库应用开发中,我们的产品经常需要支持不同的数据库,例如Oracle、 DB2、SQL krver等。虽然各数据库产品都支持标准sql语法规范,但都在此基础上进行了扩展,形成了自己独特的语法及函数。这些特殊语法虽然有利于充分发挥各数据库产品本身的性能,但并不利于数据库应用开发,如何支持异构数据库成为一个问题。在现有技术中,通常有如下两种方式解决此类问题1.对于代码中的静态sql,可针对不同数据库类型提供不同sql版本来支持;2.对于使用0/R映射框架的系统,可以借助0/R框架支持一定程度上的数据库差已升。方案1的问题在于易用性不够。方案2的问题在于支持不够全面,例如复杂的报表sql语句,无法基于0/R框架生成。因此,需求一种基于扩展例如sql语句的查询语言的方法,既能有效解决异构数据库问题,还可以提供面向业务的易用性,并且支持一定程度上的查询语句的优化。
技术实现思路
本专利技术所要解决的技术问题在于,提供一种基于扩展例如sql语句的查询语言的方法,既能有效解决异构数据库问题,还可以提供面向业务的易用性,并且支持一定程度上的查询语句的优化。有鉴于此,本专利技术提供一种查询语句处理装置,包括规则定义模块,设置对自定义元素进行处理的规则;语法解析模块,对表达式进行解析,取得其中的自定义元素;规则处理模块,按照规则对自定义元素进行处理,并使用元素的处理结果组成查询语句。通过该技术方案,通过预定的规则,将表达式的元素转换成当前数据库可识别的形式,能够使表达式适用于任何数据库。在上述技术方案中,优选地,规则处理模块在自定义元素为自定义函数时,按照规则,将自定义函数处理对应的当前数据库类型的函数作为处理结果,或取得自定义函数的调用结果作为处理结果。通过该技术方案,用户可以在表达式中使用能够实现所需功能的函数,而且函数使用简便。在上述技术方案中,优选地,还包括转换模块,将查询语句的各元素转换为字符串形式。通过该技术方案,保证了查询语句可以发送到数据库后顺利执行。 在上述技术方案中,优选地,还包括优化模块,还对查询语句进行优化。通过该技术方案,可以使形成查询语句结构更加合理,更加不容易出错。 在上述技术方案中,优选地,对查询语句进行优化具体包括消除冗余的子查询嵌套;去除无效括号;去除无效关联。实际上,优化查询语句的方式有多种,并不限于以上列举出的几种。本专利技术还提供一种查询语句处理方法,包括步骤202,设置对自定义元素进行处理的规则;步骤204,对表达式进行解析,取得其中的自定义元素;步骤206,按照规则对自定义元素进行处理,并使用元素的处理结果组成查询语句。通过该技术方案,通过预定的规则,将表达式的元素转换成当前数据库可识别的形式,能够使表达式适用于任何数据库。在上述技术方案中,优选地,在步骤206中,自定义元素为自定义函数时,按照规则,将自定义函数处理对应的当前数据库类型的函数作为处理结果,或取得自定义函数的调用结果作为处理结果。通过该技术方案,用户可以在表达式中使用能够实现所需功能的函数,而且函数使用简便。在上述技术方案中,优选地,还包括将查询语句的各元素转换为字符串形式。通过该技术方案,保证了查询语句可以发送到数据库后顺利执行。在上述技术方案中,优选地,在步骤206中,还对查询语句进行优化。通过该技术方案,可以使形成查询语句结构更加合理,更加不容易出错。在上述技术方案中,优选地,在步骤206中,对查询语句进行优化具体包括消除冗余的子查询嵌套;去除无效括号;去除无效关联。实际上,优化查询语句的方式有多种, 并不限于以上列举出的几种。通过以上技术方案,可以实现一种查询语句处理装置和一种查询语句处理方法, 既能有效解决异构数据库问题,还可以提供面向业务的易用性,并且支持一定程度上的查询语句的优化。附图说明图1是根据本专利技术的一个实施例的查询语句处理装置的框图;图2是根据本专利技术的一个实施例的查询语句处理方法的流程图;图3是根据本专利技术的一个实施例的查询语句处理装置的框图;图4是根据本专利技术的一个实施例的查询语句处理装置的模块示意图;图5是根据本专利技术的一个实施例的查询语句处理装置的模块示意图。具体实施例方式为了能够更清楚地理解本专利技术的上述目的、特征和优点,下面结合附图和具体实施方式对本专利技术进行进一步的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本专利技术,但是,本专利技术还可以采用其他不同于在此描述的其他方式来实施,因此,本专利技术并不限于下面公开的具体实施例的限制。图1是根据本专利技术的一个实施例的查询语句处理装置的框图。如图1所示,本专利技术提供一种查询语句处理装置100,包括规则定义模块102,设置对自定义元素进行处理的规则;语法解析模块104,对表达式进行解析,取得其中的自定义元素;规则处理模块106,按照规则对自定义元素进行处理,并使用元素的处理结果组成查询语句。通过该技术方案,通过预定的规则,将表达式的元素转换成当前数据库可识别的形式,能够使表达式适用于任何数据库。在上述技术方案中,规则处理模块106在自定义元素为自定义函数时,按照规则, 将自定义函数处理对应的当前数据库类型的函数作为处理结果,或取得自定义函数的调用结果作为处理结果。通过该技术方案,用户可以在表达式中使用能够实现所需功能的函数, 而且函数使用简便。在上述技术方案中,还包括转换模块108,将查询语句的各元素转换为字符串形式。通过该技术方案,保证了查询语句可以发送到数据库后顺利执行。在上述技术方案中,还包括优化模块110,还对查询语句进行优化。通过该技术方案,可以使形成查询语句结构更加合理,更加不容易出错。在上述技术方案中,对查询语句进行优化具体包括消除冗余的子查询嵌套;去除无效括号;去除无效关联。实际上,优化查询语句的方式有多种,并不限于以上列举出的几种。图2是根据本专利技术的一个实施例的查询语句处理方法的流程图。如图2所示,本专利技术还提供一种查询语句处理方法,包括步骤202,设置对自定义元素进行处理的规则;步骤204,对表达式进行解析,取得其中的自定义元素;步骤206,按照规则对自定义元素进行处理,并使用元素的处理结果组成查询语句。通过该技术方案,通过预定的规则,将表达式的元素转换成当前数据库可识别的形式,能够使表达式适用于任何数据库。在上述技术方案中,在步骤206中,自定义元素为自定义函数时,按照规则,将自定义函数处理对应的当前数据库类型的函数作为处理结果,或取得自定义函数的调用结果作为处理结果。通过该技术方案,用户可以在表达式中使用能够实现所需功能的函数,而且函数使用简便。在上述技术方案中,还包括将查询语句的各元素转换为字符串形式。通过该技术方案,保证了查询语句可以发送到数据库后顺利执行。在上述技术方案中,在步骤206中,还对查询语句进行优化。通过该技术方案,可以使形成查询语句结构更加合理,更加不容易出错。在上述技术方案中,在步骤206中,对查询语句进行优化具体包括消除冗余的子查询嵌套;去除无效括号;去除无效关联。实际上,优化查询语句的方式有多种,并不限于以上列举出的几种。图3是根据本专利技术的一个实施例的查询语句处理装置的框图。基于sql语言,本实施例提供了本文档来自技高网...

【技术保护点】
1.一种查询语句处理装置,其特征在于,包括:规则定义模块,设置对自定义元素进行处理的规则;语法解析模块,对表达式进行解析,取得其中的所述自定义元素;规则处理模块,按照所述规则对所述自定义元素进行处理,并使用所述元素的处理结果组成查询语句。

【技术特征摘要】

【专利技术属性】
技术研发人员:边传猛
申请(专利权)人:用友软件股份有限公司
类型:发明
国别省市:11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1