Сначала немного фона. Моя компания оценивает, будем ли мы переносить нашу базу данных Informix в Oracle 10g. У нас есть несколько программ ESQL / C. Я пробежал некоторые из них через инструментальные средства Oracle Migration и несколько раз пытался их протестировать. Теперь я пришел к пониманию нескольких вещей.
Во-первых, у нас есть динамические операторы sql, которые вообще не обрабатывают нулевые значения. Из того, что я прочитал, я должен либо вручную изменить запросы, чтобы использовать функцию nvl (), либо реализовать переменные индикатора. Может ли кто-нибудь подтвердить необходимость ручных модификаций? Наименьшее количество ручных изменений, которые мы должны внести в наши конвертированные программы ESQL / C, тем лучше.
Во-вторых, у нас есть несколько запросов, которые извлекают даты из различных таблиц и т. Д., И в Informix даты обрабатываются как тип long, количество дней с 31 декабря 1899 г.
В Pro * C, в каком формате выбирается дата? Я знаю, что это не числовое значение, потому что я попытался выбрать поле даты в длинной переменной и получить сообщение об ошибке Oracle, в котором указано «ожидаемое число, но есть дата». Поэтому я предполагаю, что нам нужно изменить способ выбора полей даты - либо выбрать поле даты преобразованным образом, чтобы оно стало длинным (т. Е. Количество дней с 31.12.1999), либо изменить хост переменная, соответствующая тому, что возвращает Oracle (что это, строка?).