Немного фона. Моя компания оценивает, перенесем ли мы нашу базу данных Informix в Oracle 10g. У нас есть несколько программ ESQL/C. Я запустил некоторые из инструментальных средств Oracle Migration и запутался в ходе некоторых тестов. Теперь я понял кое-что.Informix to Oracle: Работа с выборкой нулевых значений
Во-первых, у нас есть динамические операторы sql, которые вообще не обрабатывают нулевые значения. Из того, что я прочитал, мне нужно либо вручную изменить запросы, чтобы использовать функцию nvl(), либо реализовать индикаторные переменные. Может ли кто-нибудь подтвердить, нужны ли ручные изменения? Наименьшее количество ручных изменений, которые мы должны внести на наши преобразованные программы ESQL/C, тем лучше.
Во-вторых, у нас есть несколько запросов, которые тянут даты из различных таблиц и т.д., и в Informix даты, рассматриваются в качестве типа длинный, # дней с момента дек 31, 1899.
В Pro * C, какой формат является ли дата выбрана как? Я знаю, что это не числовое значение, потому что я попытался выбрать поле даты в свою длинную переменную и получить ошибку Oracle, указав «ожидаемый NUMBER, но получивший DATE». Поэтому я предполагаю, что нам придется изменить способ выбора полей даты - либо выбрать поле даты в преобразованном виде, чтобы оно стало длинным (т. Е. # Дней с 12/31/1899), либо изменить хост переменная в соответствии с тем, что возвращает Oracle (что это такое, строка?).
+1 Я чувствую вашу боль. –
Не повезло, что нужно учитывать миграцию. Надеюсь, они решают не ради вас.Является ли проблема, что динамический SQL не обрабатывает ошибки в коде Informix, или вы имеете в виду, что OCI (Pro * C) не обрабатывает переменные индикатора с переменными хоста? –
Я имел в виду, что компилятор Pro * C жалуется на нулевые значения в таблице, когда я явно не обрабатываю нулевые значения, используя nvl() или переменные индикатора. Informix все равно, если я выберу нулевые значения (и мне это нравится!) ... – KNewton