首先,在數據庫端創建簡單的存儲過程。

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

然后,開始在Python命令行中進行存儲過程調用。

  1.  
    import cx_Orace as cx
  2.  
    conn = cx.connect( 'database connecting string')
  3.  
    cursor = conn.cursor()
  4.  
    #聲明變量
  5.  
    user =  'Nick' #plsql入參
  6.  
    msg = cursor.var(cx_Oracle.STRING)  #plsql出參
  7.  
    #調用存儲過程
  8.  
    cursor.callproc( 'test_msg', [user, msg]) #['Nick', 'Nick, Good Morning!']
  9.  
    #打印返回值
  10.  
    print msg #<cx_Oracle.STRING with value 'Nick, Good Morning!'>
  11.  
    print msg.getvalue() #Nick, Good Morning!
  12.  
    #資源關閉
  13.  
    cursor.close()
  14.  
    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