本文測試在Python中通過cx_Oracle調(diào)用PL/SQL。
創(chuàng)新互聯(lián)公司專注于伊春企業(yè)網(wǎng)站建設(shè),自適應(yīng)網(wǎng)站建設(shè),商城網(wǎng)站建設(shè)。伊春網(wǎng)站建設(shè)公司,為伊春等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
首先,在數(shù)據(jù)庫端創(chuàng)建簡單的存儲過程。
create or replace procedure test_msg(i_user in varchar2, o_msg out varchar2) is begin o_msg := i_user ||', Good Morning!'; end;
然后,開始在Python命令行中進(jìn)行存儲過程調(diào)用。
import cx_Orace as cx conn = cx.connect('database connecting string') cursor = conn.cursor() #聲明變量 user = 'Nick' #plsql入?yún)?msg = cursor.var(cx_Oracle.STRING) #plsql出參 #調(diào)用存儲過程 cursor.callproc('test_msg', [user, msg]) #['Nick', 'Nick, Good Morning!'] #打印返回值 print msg #print msg.getvalue() #Nick, Good Morning! #資源關(guān)閉 cursor.close() conn.close()
延伸閱讀:
存儲過程、cx_Oracle、Python的對象類型之間存在轉(zhuǎn)換關(guān)系。具體如下:
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 |