Я пытаюсь запустить эти команды с помощью cx_Oracle:Как запустить sql-запросы без запроса с помощью cx_Oracle?
begin
add_command_pkg.add_command
( command_id => 7,
expiry_time => sysdate + 7
);
add_command_pkg.add_command
( command_id => 12,
expiry_time => sysdate + 7
);
commit;
end;
Так что это мой код Python:
dsn = cx_Oracle.makedsn(hostname, port, sid)
orcl = cx_Oracle.connect(username + '/' + password + '@' + dsn)
curs = orcl.cursor()
cmd = "begin \n\
add_command_pkg.add_command \n\
( command_id => 7, \n\
expiry_time => sysdate + 7 \n\
); \n\
\n\
add_command_pkg.add_command \n\
( command_id => 12, \n\
expiry_time => sysdate + 7 \n\
); \n\
commit; \n\
end;"
curs.execute(cmd)
orcl.close()
Когда я запускаю этот код, я получаю эту ошибку:
cx_Oracle.InterfaceError: not a query
Как я могу запустить эти команды sql, которые не являются запросами, используя cx_oracle?
Edit:
После внесения изменений это то, что я сейчас:
curs.callproc('add_command_pkg.add_command', [],
{ 'command_id' : 7,
'session_id' : 'null',
'p_expiry_time' : 'sysdate + 7',
'config_id' : 6 })
Когда я запускаю это, я получаю эту ошибку:
File "N:\App\MainWidget.py", line 456, in myFunc
'config_id' : 6 })
cx_Oracle.DatabaseError: ORA-01858: a non-numeric character was found where a numeric was expected
ORA-06512: at line 1
Кроме того, как я совершаю это?
Thasnk !. Я внесла некоторые изменения в свой код, но теперь я получаю новую ошибку. Вы можете взглянуть? –
Похоже, что это может быть проблемой с самой процедурой Oracle, так как я бы ожидал, что 'TypeError' будет поднят на python, но вы неправильно переносите некоторые переменные, например' 'null'' должно быть просто' None'. – Ben
Как я могу передать дату? Когда я пытаюсь передать его как '' sysdate + 7'', я получаю сообщение об ошибке. Когда я пытаюсь передать его как 'datetime.now() + timedelta (seconds = 10)' мое приложение блокируется. –