sql - Delphi Interbase Sql 转换为 Sql Server 和 Oracle

标签 sql oracle delphi firebird interbase

我有一个使用数据库的delphi应用程序 间基/ Firebird 。为了查阅和写入数据,我使用 InterBase 组件选项板(IBTable、IBQuery、IBDataset)。我是 正在将我的系统转换为 sqlserver/Oracle,但我有 在运行时使用 SQL 指令组装的数千个查询 特定数据库InterBase/Firebird。有谁知道 有任何组件或工具可以执行 Parse 命令 Interbase -> SQL Server 或 Interbase-> 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');

将会

“从 TBCITY 选择前 10 个城市名称”

还有

Parser.ParseTo('ORACLE');

将会

“从 TBCITY 选择城市名称,其中 ROWNUM <= 10”

最佳答案

1) AFAIK,像 AnyDAC 这样的库,有 SQL abstraction syntax 。也许您可以在 SQL 命令文本中使用此功能。

2) 如果您在运行时组装 SQL,那么为什么不直接编写这样的代码:

if Firebird then
  SQL.Add(...)
else if Oracle then
  SQL.Add(...)
...

关于sql - Delphi Interbase Sql 转换为 Sql Server 和 Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877737/

相关文章:

sql - SQL 语句中不允许的本地集合类型

c# - 将 Delphi 变体记录转换为 C#

sql - MS-SQL 表设计器中方括号 [] 的含义?

javascript - 如何设计链式 Model.find() 函数?

sql - PL SQL 将结果集映射到多条记录

sql - Oracle测量存储过程的执行时间

delphi - TObjectList.Clear 访问冲突

delphi - 如何将最近的项目添加到 Windows 7 任务栏上程序的跳转列表中?

mysql - 输入多个外键时无法在 SQL 中创建表

php - MySQL 来自远程表的条件分组