ligvfbxxs 发表于 2015-3-26 09:40:15

在Python中使用cx_Oracle调用Oracle存储过程

本文测试在Python中通过cx_Oracle调用PL/SQL。
首先,在数据库端创建简单的存储过程。

1
2
3
4
create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is
begin
o_msg := i_user ||', Good Morning!';
end;




然后,开始在Python命令行中进行存储过程调用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import cx_Orace 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', ) #['Nick', 'Nick, Good Morning!']
#打印返回值
print msg #<cx_Oracle.STRING with value 'Nick, Good Morning!'>
print msg.getvalue() #Nick, Good Morning!
#资源关闭
cursor.close()
conn.close()




延伸阅读:
存储过程、cx_Oracle、Python的对象类型之间存在转换关系。具体如下:

Oracle
cx_Oracle
Python

VARCHAR2
NVARCHAR2
LONG
cx_Oracle.STRING
str

CHAR
cx_Oracle.FIXED_CHAR

NUMBER
cx_Oracle.NUMBER
int

FLOAT
float

DATE
cx_Oracle.DATETIME
datetime.datetime

TIMESTAMP
cx_Oracle.TIMESTAMP

CLOB
cx_Oracle.CLOB
cx_Oracle.LOB

BLOB
cx_Oracle.BLOB



页: [1]
查看完整版本: 在Python中使用cx_Oracle调用Oracle存储过程