Получение ошибки с функцией Python cx_oracle callproc

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

        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' : None, 'expiry _time' : 'sysdate + 7', 'config_id' : 6 })
cx_Oracle.DatabaseError: ORA-01858: был найден нечисловой символ там, где ожидалось числовое значение ORA-06512: в строке 1

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

редактировать:

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

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

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


person Di Zou    schedule 24.01.2012    source источник
comment
Какова подпись add_command_pkg.add_command?   -  person Gerrat    schedule 24.01.2012
comment
@ Геррат, что это значит?   -  person Di Zou    schedule 24.01.2012
comment
В основном первая строка функции: например. что-то вроде: процедура add_command (param1 в числе, param2 в varchar2)   -  person Gerrat    schedule 24.01.2012
comment
@Gerrat, хорошо, я добавил это в ОП как правку.   -  person Di Zou    schedule 24.01.2012


Ответы (1)


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

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

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

person Gerrat    schedule 24.01.2012