我有一个使用数据库Interbase/Firebird的Delphi应用程序。为了查询和写入数据,我使用InterBase组件面板(IBTable、IBQuery、IBDataset)。我正在将我的系统转换为SQL Server/Oracle,但是我有成千上万个查询,这些查询在运行时与特定于InterBase/Firebird数据库的SQL指令一起组装。是否有任何组件或工具可以将Interbase命令解析为SQL Server或Oracle的命令?
我需要的类似于:
Var
Parser: TParser;
OutputSql: String;
Begin
Parser := TParser.Create();
Parser.Text := 'SELECT FIRST 10 CITYNAME FROM TBCITY';
if Firebird then
OutPutSql := Parser.ParseTo('SQLSERVER');
if Oracle then
OutPutSql := Parser.ParseTo('ORACLE');
ComponentAccess.Sql.Text := OutPutSql;
...
的结果:
Parser.ParseTo('SQLSERVER');
将会是:
'SELECT TOP 10 CITYNAME FROM TBCITY'
以及:
Parser.ParseTo('ORACLE');
将会是
'SELECT CITYNAME FROM TBCITY WHERE ROWNUM <= 10'
(此为原文,不需翻译)