Попытка вызова функции pl / sql в python, но получение ошибки ORA-01858 с to_date

1

Я пытаюсь вызвать функцию pl/sql с помощью python. У меня возникают проблемы с использованием встроенной функции "to_date()".

Вот объявление функции create_batch

create or replace function create_batch( p_batchnumber in VARCHAR, p_userid in VARCHAR, p_received_date in VARCHAR, p_workstation IN VARCHAR ) RETURN VARCHAR IS

Это строка кодирования, которую я пытаюсь использовать для вызова этой функции.

batch_id = cur.callfunc("create_batch", cx_Oracle.STRING, ['100001','test','to_date(\'05/15/2018\',\'MM/dd/yyyy\')','01'])

Это сообщение об ошибке.

File "test_oracle.py", line 7, in <module> batch_id = cur.callfunc("create_batch", cx_Oracle.STRING, ['100001','test','to_date(\'05/15/2018\',\'MM/dd/yyyy\')','01']) cx_Oracle.DatabaseError: ORA-01858: a non-numeric character was found where a numeric was expected ORA-06512: at "CFT.CREATE_BATCH", line 10 ORA-06512: at line 1

Любая помощь, которую вы могли бы предоставить, была бы очень признательна!

Спасибо!

Теги:

1 ответ

1
Лучший ответ

Неясно, каковы ваши настройки по умолчанию для NLS_DATE_FORMAT на вашем уровне сеанса cx_Oracle, потому что это формат даты ввода, который вы должны дать. Если ваш сеанс установлен с NLS_DATE_FORMAT как MM/DD/YYYY, вам следует отправить формат даты в следующем формате.

batch_id = cur.callfunc("create_batch", cx_Oracle.STRING, ['100001','test','to_date("05/15/2018","MM/DD/YYYY")','01'])

Вам не нужно преобразовывать с помощью функции to_date для p_received_date, поскольку это вход VARCHAR, а не вход даты. Таким образом, вы можете попробовать в следующем формате, предполагая, что вы не устанавливаете формат даты на уровне сеанса, и вы используете формат по умолчанию:

batch_id = cur.callfunc("create_batch", cx_Oracle.STRING, ['100001','test','15-MAY-2018','01'])
  • 0
    Я смог просто использовать «15-мая-2018». Спасибо за помощь!
  • 0
    Спасибо за обновления.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню