oracle 通过存储过程执行python传递的sql语句
存储过程: 数据库表要提前建好p_preworking
create or replace procedure p_preworking(str_sql in varchar2) as
ERROR_CODE NUMBER;
ERROR_MESSAGE VARCHAR2(5000);
begin
/* execute immediate str_sql;*/
execute immediate str_sql;
commit;
EXCEPTION
WHEN OTHERS THEN
ERROR_CODE := SQLCODE;
ERROR_MESSAGE := '调用p_preworking:' || str_sql;
INSERT INTO gf_EXECUTIONLOG
(PROCEDURENAME, ERRORDATE, ERRORCODE, ERRORMESSAGE)
VALUES
('p_preworking', SYSDATE, ERROR_CODE, ERROR_MESSAGE);
COMMIT;
end p_preworking;
python 代码
def orcale_test():
con = cx_Oracle.connect('ycgf_zkr/RD_dev#GFzkr029@10.4.128.118:1521/YCGFR')
sql = [""" update preworking set actualstarttime=sysdate where batchno='20211202155100A04_4' and ROWNUM = 1 """]
cur = con.cursor()
try:
cur.callproc('P_PREWORKING',sql)
sleep(1)
finally:
cur.close()
con.close()