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