Переход от Oracle SQL к ANSI SQL плюсы и минусы

Я работаю в проекте, где пользовательский интерфейс имеет прямой доступ к базе данных через код SQL. У компании есть структура, в которой мы создаем страницы пользовательского интерфейса в формате xml, после чего она анализируется и создает страницы FLEX. Если нам нужны данные из БД (Oracle), мы добавляем SQL-запрос в XML (вместо привязки данных с помощью объекта datacontext, как мы могли бы сделать с WPF). Если мы хотим добавить какую-то логику, за ней нет кода, мы вызываем процедуры хранилища. После того, как у нас есть данные, нам нужен анализатор.

Новые требования заключаются в использовании инфраструктуры и создании нового продукта, который будет совместим с SQL Server, и предполагается начать преобразование (Oracle)SQL-запросов в ANSI SQL.

Может ли кто-нибудь сказать мне преимущества и, в основном, проблемы, с которыми мы столкнемся при этом? Как вы думаете, есть лучший способ? Примечание: фреймворк действительно большой, и на нем построено множество продуктов, поэтому менеджеры не хотят просто выбрасывать его (я пытался, но..:))

1 ответ

Решение

Каждый диалект SQL отличается. Вы можете использовать ANSI SQL, но а) не все ANSI SQL реализованы большинством СУБД и б) большинство СУБД имеют специфические для реализации оптимизации, которые в некоторых случаях будут работать лучше.

Так что я бы сказал, не переходите на ANSI SQL. Это не всегда будет работать, а иногда будет работать медленнее, чем использование нестандартных реализаций поставщика.

В частности, Oracle требует, чтобы StoredProcedure возвращал REF_CURSOR из хранимой процедуры для заполнения DataSet. SQL Server нет; SP возвращает то, что выбрал sp. Вам придется изменить свой SP, чтобы избавиться от возвращенного REF_CURSOR.

Обработка дат совсем иная: Oracle требуется to_date, чтобы превратить строку в дату, в которой предложения и т. Д.; SQL Server просто берет строку и преобразует ее для вас. И так далее, и так далее. (Я не совсем уверен, что такое стандарт ANSI, или даже если он охватывает это!) Чтобы избежать изменения вашего SQL, вы можете добавить функцию создания SQL Server с именем to_date, но теперь это замедлит ваш SQL.

Если у вас много PL / SQL в хранимых процедурах, у вас большая работа по преобразованию его в T-SQL. Они совсем разные.

Удачи!

Другие вопросы по тегам