Получение ошибки с помощью функции Python cx_oracle callproc - PullRequest
0 голосов
/ 24 января 2012

У меня есть этот код:

        curs.callproc('add_command_pkg.add_command', [],
                      { 'command_id' : 7,
                        'session_id' : None,
                        'expiry_time' : 'sysdate + 7',
                        'config_id' : 6 })

Когда я запускаю это, я получаю эту ошибку:

Файл "N: \ app \ MainWidget.py", строка 453, в myFunc
curs.callproc ('add_command_pkg.add_command', [], {'command_id': 7, 'session_id': нет, 'expiry _time': 'sysdate + 7', 'config_id': 6})
cx_Oracle.DatabaseError: ORA-01858: не числовой символ был найден там, где ожидалось числовое значение ORA-06512: в строке 1

Какой параметр я передаю неправильно и как это сделатьЯ это исправлю?

edit:

подпись команды:

                                        ( command_id   IN NUMBER,
                                          expiry_time  IN DATE,
                                          session_id   IN NUMBER DEFAULT NULL,
                                          config_id    IN NUMBER DEFAULT NULL
                                        );

Кроме того, как мне это зафиксировать?

1 Ответ

1 голос
/ 25 января 2012

Вы не можете передать строку 'sysdate + 7' для параметра expiry_time.

Вы можете составить объект datetime или, возможно, просто изменить свою процедуру, чтобы принять числовое «смещение дней» и добавить или вычесть это из sysdate в самой процедуре.

Для фиксации вы можете вызвать commit для объекта соединения cx_Oracle.

...