首先,在數據庫端創建簡單的存儲過程。
-
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_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', [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()
延伸閱讀:
存儲過程、cx_Oracle、Python的對象類型之間存在轉換關系。具體如下:
Oracle |
cx_Oracle |
Python |
VARCHAR2 |
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 |
轉載於:https://blog.51cto.com/pierre/1623820