[发明专利]SQL函数转换装置和SQL函数转换方法无效
申请号: | 201110295584.6 | 申请日: | 2011-09-29 |
公开(公告)号: | CN102436474A | 公开(公告)日: | 2012-05-02 |
发明(设计)人: | 娄东生;刘新峰;孙东旺 | 申请(专利权)人: | 畅捷通信息技术股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京友联知识产权代理事务所(普通合伙) 11343 | 代理人: | 尚志峰;汪海屏 |
地址: | 100094 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | sql 函数 转换 装置 方法 | ||
技术领域
本发明涉及数据库技术领域,具体而言,涉及SQL函数转换装置和方法。
背景技术
随着数据库产品的不断增多,除流行的ORACLE、Sql Server、DB2外,目前国内又涌现出了诸如:KingbaseES、GBASE、OSCAR等比较成熟的数据库产品,用户基与各种需求对数据库的选择也在增加。作为一款产品化的软件让其支持多种数据库技术是很有必要的。如何让软件产品能与不同的数据库产品交互,面对数十万行的产品代码,不可能针对每种数据库对上层代码进行修改,目前比较流行的做法是:尽量使用与数据库无关的通用SQL语句和数据类型;重写与开发工具相关的DataBase对象;在DataBase对象的底层截取SQL串进行与目标数据库相关的替换。其中最重要的工作之一就是对SQL串的替换,SQL串的替换一般有以下几种形式:
1、直接在上层使用处更改SQL语句,目的是让SQL语句变成通用写法以减少Database对象的底层替换操作。
2、在Database对象的底层,对于替换条件满足唯一正侧表达式的串使用正侧表达式进行替换。
3、对于满足有限替换条件,且条件之间不会产生互拆的串使用正侧表达式方式进行顺序替换。
不同数据库产品之间的主要差异之一就是数据库的系统函数差异,如以下列举的一些类型的差异:
1、功能相同但名称不同,如Sql Server中的Len(string_expression)函数与KingbaseES中的Length(string_expression)函数。
2、名称相同但功能不同,如Sql Server中的CONVERT函数与KingbaseES中的CONVERT函数是两个完全无法联系在一起的函数,前者是用作数据类型的转换,后者是用作字符串编码的转换。
3、入口参数有差异,如Sql Server中的SPACE(integer_expression)与KingbaseES中的RPAD(char_expression,integer_expression)。
4、某一数据库中独有的函数,如Sql Server中的IIf(《Logical Expression》,《Numeric Expressionl》,《Numeric Expression2》),在KingbaseES中不存在。
对于支持多数据库的软件产品,这些差异处理不好会造成错误,如直接报错、由于引用处使用了容错而使代码往错误的逻辑方向运行、返回不是需要的结果等,对开发和测试带来很大的额外工作量。
而对SQL串的替换操作不能简单用正侧表达式方式替换,主要有以下三方面原因:
1、因为函数的使用往往带有复杂的混合、嵌套使用的问题,因而造成无法用正侧表达式表述,例如Sql server表述:select space(12-len(′2311′))在KingbaseES中的等效转换:select RPAD(′′,12-length(′2311′))。
2、函数入口参数的多样性造成匹配的正侧表达式的多样性。例如Sql server中conver函数至少对应20种以上的转换形式。
3、由于数据库系统间的差异,无直接匹配的功能函数,还需要通过特定算生成相应的替换串,如Sql server表述:select convert(varchar(10),cast(′2011-01-1209:30:01′as datetime),102),在KingbaseES中的等效转转为:select TO_CHAR(cast(′2011-01-1209:30:01′as TIMESTAMP),′YYYY.MM.DD′)。
因此,需要一种比较全面且安全可靠的函数替换技术,可以考虑到不同数据库产品之间的差异,满足多种数据库的要求。
发明内容
本发明所要解决的技术问题在于,提供一种SQL函数转换技术,可以进行全面且安全可靠的函数替换。
根据本发明的一个方面,提供了一种SQL函数转换装置,包括:第一替换单元,用标识符替换来自调用者的SQL函数中的参数,得到迭代后的SQL函数;数据库单元,将所述标识符与所述参数对应保存为参数对照表;处理单元,根据所述迭代后的SQL函数中的标识符,从所述参数对照表提取出所述参数,对所述参数进行转换处理;第二替换单元,将处理后的所述参数替换所述迭代后的SQL函数中对应的标识符,以得到目标数据库执行的SQL函数。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于畅捷通信息技术股份有限公司,未经畅捷通信息技术股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110295584.6/2.html,转载请声明来源钻瓜专利网。
- 上一篇:用于浴缸的可滑动座位装置
- 下一篇:一种婴儿高空安全带