Python利用cx_Oracle调用Oracle存储过程详解

巷口听风
巷口听风
发布时间:2026-10-13 | 1人浏览过
原创

本文详细介绍如何在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程序开发的读者有所助益。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表