我在一个项目中工作,在该项目中,UI可以通过SQL代码直接访问数据库。该公司有一个框架,我们在xml中创建UI页面,然后解析并创建FLEX页面。如果我们想要来自DB(Oracle)的一些数据,我们在xml中添加一个sql查询(而不是像我们用WPF那样用datacontext对象进行数据绑定)。如果我们想添加一些逻辑,则没有代码,我们称之为存储过程。在我们获得数据后,我们需要解析器完成工作。
新的要求是使用框架并创建一个与SQL Server兼容的新产品,并且开始将(Oracle)SQL查询转换为ANSI SQL。
有人可以告诉我这些好处,主要是我们将要面对的问题吗? 你认为有更好的方法吗? 注意:框架非常庞大,并且有很多产品都是基于它的,因此管理人员并不热衷于抛弃它(我试过但是......))
答案 0 :(得分:0)
SQL的每种方言都不同。您可以使用ANSI SQL但a)并非所有ANSI SQL都是由大多数DBMS实现的,并且b)大多数DBMS都具有特定于实现的优化,这些优化在某些情况下表现更好。
所以我要说,不要选择ANSI SQL。它并不总是有效,有时它会比利用供应商的非标准实现更慢。
具体来说,Oracle要求StoredProcedure从存储过程返回REF_CURSOR以填充DataSet。 SQL Server没有; SP返回sp SELECTed的内容。你将不得不改变你的SP来摆脱返回的REF_CURSOR。
日期处理完全不同:Oracle需要使用to_date将字符串转换为where子句等的日期; SQL Server只接受字符串并为您转换它。等等等等。 (我完全不确定ANSI标准是什么,或者它是否涵盖了这一点!)为了避免更改SQL,您可以添加名为to_date的create SQL Server函数,但现在这会降低SQL的速度。
如果存储过程中有很多PL / SQL,那么将它转换为T-SQL就有了很大的作用。它们完全不同。
祝你好运!