Python利用cx_Oracle调用Oracle存储过程详解
本文详细介绍如何在Python环境中通过cx_Oracle库调用Oracle数据库的PL/SQL存储过程。文章涵盖了从创建存储过程到Python端调用、参数绑定及结果获取的完整流程,并解析了Oracle数据类型与Python对象之间的映射关系,为开发者提供实用的数据库操作指南。
本文分享一个Python通过cx_Oracle调用Oracle存储过程的具体实例,供读者参考学习。
本示例主要演示如何在Python中利用cx_Oracle模块执行PL/SQL代码。
第一步,需要在Oracle数据库中创建所需的存储过程。
create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end;
接下来,在Python命令行环境中执行存储过程的调用操作。
import cx_Oracle as cx
conn = cx.connect('database connecting string')
cursor = conn.cursor()
#声明变量
user = 'Nick' #plsql入参
msg = cursor.var(cx_Oracle.STRING) #plsql出参
#调用存储过程
cursor.callproc('test_msg', [user, msg]) #['Nick', 'Nick, Good Morning!']
#打印返回值
print msg #<cx_Oracle.STRING with value 'Nick, Good Morning!'>
print msg.getvalue() #Nick, Good Morning!
#资源关闭
cursor.close()
conn.close()
补充阅读:
在Oracle数据库、cx_Oracle库以及Python语言之间,存储过程与对象类型存在特定的转换对应关系,具体映射如下所示:
| Oracle | cx_Oracle | Python |
| VARCHAR2, NVARCHAR2, LONG | cx_Oracle.STRING | str |
| CHAR | cx_Oracle.FIXED_CHAR | str |
| NUMBER | cx_Oracle.NUMBER | int |
| FLOAT | cx_Oracle.NUMBER | float |
| DATE | cx_Oracle.DATETIME | datetime.datetime |
| TIMESTAMP | cx_Oracle.TIMESTAMP | datetime.datetime |
| CLOB | cx_Oracle.CLOB | cx_Oracle.LOB |
| BLOB | cx_Oracle.BLOB | cx_Oracle.LOB |
如需了解更多Python数据库操作技巧,可参考本站相关专题,包括《Python常见数据库操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。
期望本文的介绍能对从事Python程序开发的读者有所助益。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













