/ / Oracle SQLからANSI SQLへの移行長所と短所 - sql、oracle、database-agnostic、ansi-sql

Oracle SQLからANSI SQLの賛同者、Oracle、データベースに依存しない、ansi-sqlへの移行

私は、UIが直接的なプロジェクトで働いていますSQLコードを介したデータベースへのアクセス同社には、xmlでUIページを作成し、その後それを解析してFLEXページを作成するフレームワークがあります。 DB(Oracle)からのデータが必要な場合は、(WPFの場合のようにdatacontextオブジェクトを使用してデータバインドするのではなく)xmlにsqlクエリを追加します。ロジックを追加したい場合は、背後にコードはありません。ストアプロシージャを呼び出します。データを取得したら、パーサーがその仕事をします。

新しい要件は、フレームワークを使用してSQL Serverと互換性のある新しい製品を作成することです。考えは、(Oracle)SQLクエリをANSI SQLに変換することです。

誰かが私に利点と主に私たちが直面することになるだろう問題? もっと良い方法があると思いますか? 注:フレームワークは本当に大きく、その上に構築された多くの製品があるので、マネージャはただそれを捨てることに熱心ではありません(私は試しましたが.. :)

回答:

回答№1は0

SQLの方言はそれぞれ異なります。 ANSI SQLを使用することもできますが、a)すべてのANSI SQLがほとんどのDBMSで実装されているわけではありません。また、b)ほとんどのDBMSには実装固有の最適化があります。

そのため、ANSI SQLを使用しないでください。常にうまくいくとは限らず、ベンダの非標準実装を利用するよりも遅くなることがあります。

具体的には、OracleにはStoredProcedureが必要です。DataSetを埋めるために、ストアドプロシージャからREF_CURSORを返します。 SQL Serverはしません。 SPはspが選択したものを返します。返されたREF_CURSORを取り除くには、「SPを変更する必要があります」。

日付処理はかなり異なります。 Oracleは、where句などで文字列を日付に変換するためのto_dateが必要です。 SQL Serverは単に文字列を受け取り、それを変換します。などなど。 SQLを変更しないようにするには、to_dateというSQL Server関数を作成しますが、これでSQLが遅くなります。

ストアド・プロシージャに多くのPL / SQLがある場合は、それをT-SQLに変換する大きな仕事があります。彼らはかなり違います。

がんばろう!