Здравствуйте я в настоящее время участвует в проекте, который работает в течение более 2 лет, и вчера, мы начали сталкиваться следующий вопрос:Неверный номер, сравнивая строку с номером оракула
один запрос, который всегда использовался и выбежала на менее 20.000 каждый день, вчера fom ничего не начал возвращать неверную ошибку числа.
ОР-01722: недействительный номер
select orq.rt_id, orec.* from orderrec orec
join order_header oh on (oh.order_code = orec.ordernumber and oh.page = orec.pagenumber)
left join order_request orq on oh.orq_id = orq.orq_id
where ordernumber=? and pagenumber=? and state < 100
проблемная часть: oh.order_code = orec.ordernumber
- order_code является строкой
- ORDERNUMBER является числом
Поскольку это будет оказывать сильное влияние на производство клиентов, я меняю равное сравнение с подобным поисковым запросом ниже. После этого процесс изменений снова начал работать без проблем.
select orq.rt_id, orec.* from orderrec orec join order_header oh on (oh.order_code like orec.ordernumber and oh.page = orec.pagenumber) left join order_request orq on oh.orq_id = orq.orq_id
where ordernumber=? and pagenumber=? and state < 10
Этот запрос является файлом XML, используемым с программой java.
Я сомневаюсь, почему это произошло?
" order_code - это строка ". Неизменяемый закон приложений баз данных: если мы определим столбцы чисел как строку, в конце концов она будет содержать нечисловые символы. – APC