: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
cx_oracleを使用したクエリではないこれらのSQLコマンドをどのように実行すればよいですか?
編集:これは私が今持っているもので、変更を行った後
:
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 !.コードにいくつか変更を加えましたが、今は新しいエラーが発生しています。あなたは見てみることができますか? –
Pythonによって 'TypeError'が発生すると予想されるので、Oracleプロシージャ自体に問題があるようですが、いくつかの変数を間違って渡しています。たとえば、' null''は 'None'にする必要があります。 – Ben
どのように日付を渡す必要がありますか? '' sysdate + 7 ''として渡そうとするとエラーになります。 'datetime.now()+ timedelta(seconds = 10)'として渡すと、アプリケーションがロックアップします。 –