Как передать объект даты в PL- SQL в качестве первого и единственного входного параметра - PullRequest
0 голосов
/ 02 августа 2020
  1. Сначала я возьму значение даты в качестве входной переменной из базы данных. Формат даты представлен в формате (2020-08-31).

  2. Мне нужно преобразовать эту дату и передать ее в блок PL- SQL в формате, как показано ниже .

    to_date ('31082020', 'ddmmyyyy')

  3. Чтобы получить указанный выше формат, я выполнил преобразование, используя java, как показано ниже.

    // Converting the date format for the required type for PL-SQL block
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyyyy");
     String modifiedDate = simpleDateFormat.format(processingDate);
     String modifiedDateParameter = "to_date(\'"+modifiedDate+"\','ddmmyyyy')";
    
  4. Теперь я передам указанный выше параметр modifiedDateParameter моему блоку PL- SQL в качестве входного параметра. Код для этого приведен ниже. Здесь SQL - это процедура, которую я буду вызывать.

    callableStatement = conn.prepareCall (SQL); callableStatement.setDate (1, java. sql .Date.valueOf (billEndDate)); callableStatement.executeUpdate ();

  5. Однако я получаю исключение ниже.

Исключение в потоке «main» java .lang.IllegalArgumentException в java .sql / java. sql .Date.valueOf (Date. java: 141)

Могу я узнать, как что модификация, которую мне нужно сделать, чтобы исправить эту проблему, пожалуйста?

1 Ответ

0 голосов
/ 02 августа 2020

Посмотрите на javado c of java. sql .Date.valueOf: https://docs.oracle.com/javase/7/docs/api/java/sql/Date.html#valueOf (java .lang.String)

Преобразует строка в формате перехода даты JDB C к значению даты. s - объект String, представляющий дату в формате «гггг- [м] м- [д] д». Начальный ноль для мм и дд также можно опустить.

Итак, этот вызов работает: java. sql .Date.valueOf ("2020-2-2");

Это вызывает упомянутое вами исключение: java. sql .Date.valueOf ("20200909");

...