https://www.jb51.net/article/125160.htm?utm_medium=referral Python使用cx_Oracle调用Oracle存储过程的方法示例
https://www.jb51.net/article/139627.htm Python使用cx_Oracle模块操作Oracle数据库
https://www.jb51.net/article/116017.htm Oracle存储过程及调用
1、创建存储
带输入、输出参数的存储过程语法:
create procedure 存储过程名称(随便取) (变量1 in(或out) 数据类型,变量2 in(或out) 数据类型,...,变量n in(或out) 数据类型) is 在这里可以定义常量、变量、游标、复杂数据类型这里可以定义变量、常量 begin 执行部分 end;
create procedure procedure_3(v_i in number,v_j in number ,v_m out number) is begin dbms_output.put_line('procedure_3.......'); v_m:=v_i - v_j; dbms_output.put_line(v_i||' - '||v_j||' = '||v_m); end;
2、调用存储
declare v_param1 number(5):=2; v_param2 number(5):=8; v_result number(5); begin --调用上面案例一的存储过程 procedure_1(); --调用上面案例二的存储过程 procedure_2(v_param1,v_param2); --调用上面案例三的存储过程 procedure_3(v_param1,v_param2,v_result); dbms_output.put_line(v_result); end;
3、python去调用存储:
import cx_Oracle conn =cx_Oracle.connect('MDM_TEST/mdm#123@172.17.0.128:1521/CSSY') cur = conn.cursor() # 声明变量 # user = 'Nick' # plsql入参 org_code='01' sysm1_code='HIS0311' sysm2_code='HIS0120' sysm3_code='HIP0104' sysm4_code='HIP0105' # 调用存储过程 try: cur.callproc('P_DEMO', [org_code, sysm1_code,sysm2_code,sysm3_code,sysm4_code]) # ['Nick', 'Nick, Good Morning!'] except Exception as e: raise e # 资源关闭 cur.close() conn.close()