Я делаю запрос из веб-приложения java к хранимой процедуре Oracle, в которой указан параметр IN Timestamp.
Информация о том, как путешествует информация, выглядит примерно так:
javaWebApp -} клиент веб-сервиса -} ws -} сохраненная процедура
И я отправляю параметр Timestamp в виде отформатированной строки из клиента веб-сервиса в ws.
В среде тестирования работает отправка:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy hh:mm:ss a");
input.setTimestampField(dateFormat.format(new Date()));
Как видите, отформатированная строка отправляется. Но в производственной среде возникает исключение
ORA-01830: date format picture ends before converting entire input string.
Это относится к разным форматам, возможно, из-за различий в конфигурации от одной БД к другой. Я знаю, что среда тестирования должна быть точной копией производственного сайта, но не в моих руках правильно их настроить. И мне нужно отправить поле Timestamp-as-a-formatted-string, несмотря на то, как они настраивают базу данных. Есть идеи? Заранее спасибо.
**** РЕДАКТИРОВАТЬ ****: Я нашел способ заставить его работать должным образом, несмотря на конкретную конфигурацию. Это так же просто, как установка инструкции вызова в веб-сервисе с соответствующими инструкциями Oracle. Я имею в виду, что вызов хранимой процедуры Oracle произошел с
"call PACKAGE.MYPROCEDURE(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
до
"call PACKAGE.MYPROCEDURE(?,?,?,?,?,?,TO_TIMESTAMP(?, 'DD-MM-YYYY HH24:MI:SS'),?,?,?,?,?,?,?,?,?,?,?)"
в то время как формат, который я установил в вызове процедуры, совпадает с форматом, отправленным веб-приложением с использованием SimpleDateFormat, указанного в исходном вопросе, слегка измененном:
SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
Спасибо всем за помощь и идеи.