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()
posted @ 2022-01-24 13:05  利秋  阅读(110)  评论(0)    收藏  举报