0

我在一个 UI 可以通过 SQL 代码直接访问数据库的项目中工作。该公司有一个框架,我们在其中创建 xml 的 UI 页面,然后对其进行解析并创建 FLEX 页面。如果我们想要来自 DB (Oracle) 的一些数据,我们在 xml 中添加一个 sql 查询(而不是像 WPF 那样使用 datacontext 对象进行数据绑定)。如果我们要添加一些逻辑,后面没有代码,我们调用存储过程。在我们获得数据后,我们需要解析器来完成这项工作。

新要求是使用该框架并创建一个与 SQL Server 兼容的新产品,并且想法是开始将 (Oracle)SQL 查询转换为 ANSI SQL。

有人能告诉我这样做的好处,主要是我们将面临的问题吗?你认为有更好的方法吗?注意:这个框架真的很大,而且有很多产品都建立在它上面,所以经理们并不热衷于把它扔掉(我试过但是.. :))

4

1 回答 1

0

SQL 的每种方言都是不同的。您可以使用 ANSI SQL,但 a) 并非所有 ANSI SQL 都由大多数 DBMS 实现,b) 大多数 DBMS 具有特定于实现的优化,在某些情况下会表现得更好。

所以我想说,不要选择ANSI SQL。它并不总是有效,有时它会比利用供应商的非标准实现更慢。

具体来说,Oracle 需要 StoredProcedure 从存储过程返回 REF_CURSOR 以填充 DataSet。SQL Server 没有;SP 返回 sp 选择的内容。您将不得不更改您的 SP 以摆脱返回的 REF_CURSOR。

日期处理完全不同:Oracle 需要一个 to_date 来将字符串转换为 where 子句等中的日期;SQL Server 只是获取字符串并为您转换它。等等等等。(我完全不确定 ANSI 标准是什么,或者即使它涵盖了这一点!)为了避免更改您的 SQL,您可以添加名为 to_date 的创建 SQL Server 函数,但现在这会减慢您的 SQL。

如果存储过程中有很多 PL/SQL,那么将其转换为 T-SQL 是一项艰巨的任务。它们完全不同。

祝你好运!

于 2014-01-24T11:52:22.610 回答