日期:2014-05-17  浏览次数:20980 次

共享:SQL Server 到 Oracle 的SQL语法自动翻译(转换)器源码
下载:
http://download.csdn.net/detail/shaoyy/3694238

转换源码在SqlConvertToOracle.pas中,

该转换过程负则将SQL Server的 一些语法特性翻译为Oracle支持的形式,也包括常用的函数,

支持复杂的SQL,例如嵌套/子查询等。


这是小弟为了一个Oracle项目的应急之作,我们的系统(Delphi的三层架构)一直运行在sql server下面,

当时客户指定需要的是支持Oracle版本的应用系统,

这个系统不小,如果要将里面的SQL全部转换为Oracle,需要大量的时间及人力和物力,为了在短期

内完成任务,小弟想到了“自动翻译”的方法,其难度是可想而知的,不过幸好我们的系统设计还算

合理,所在的SQL都是由中间层一个统一的过程来执行的,在写好这个转换过程后,我在中间层那个执行

SQL的过程中对调用者传进的SQL进行转换后再执行,就基本完成了整个系统的SQL语法从SQL Server到Oracle的

兼容,呵呵,听起来有点不可思议。系统已经于3个月前上线,目前运行很稳定。

如果有人用得着或发现什么问题,请加我的QQ:229481711,同时请支持一下本人的报表控件作品(Ac Report):


http://download.csdn.net/detail/shaoyy/3674310


------解决方案--------------------
这代码里有没有Bug呢,如果批量转换,而其中又有隐藏的小错误,那么,部分SQL转换成功,部分SQL执行起来又有问题。到时候,修改出错的SQL估计是个难事了。

借鉴借鉴转换的思想~~~
------解决方案--------------------
哈哈,强悍!
SQLSERVER与ORACLE特性差别很大,你确信自动转换很合理吗?
------解决方案--------------------
大型国企项目是这样开发的啊,怪不得7.13抓了几个无证程序员,莫非楼主手握丹书铁卷,不怕朝廷抓你
------解决方案--------------------
前面的是玩笑,纯属娱乐...
遇到这种情况基本都是每句SQL都重新检查一遍了,没办法语法差异太大,系统上线初期可能没什么问题,但是考虑后期数据量较大,一些SQL的执行效率就可能就不理想了,这是必须考虑和面对的.楼主说此方法是商业级别的,应该是经过了大量数据测试. 简单SQL可以借鉴这样的方式,但是复杂SQL还是建议重写.
------解决方案--------------------
我想看一下最常用的 update t1 set t1.f1=t2.f2,t1.f3=t2.f4 from t2 where t1.f5=t2.f5
自动转换以后的代码。

------解决方案--------------------
探讨
引用:
我想看一下最常用的 update t1 set t1.f1=t2.f2,t1.f3=t2.f4 from t2 where t1.f5=t2.f5
自动转换以后的代码。


结果如下:

Merge Into t1
Using t2
On t1.f5=t2.f5
When Matched Then Update Set t1……