2012-06-15 50 views
0

使用callproc()調用帶有參數的存儲過程時出現錯誤。cx_Oracle callproc()方法

cur.callproc("TEST.manage_partitions_pkg.test", ["to_date('20120525', 'YYYYMMDD')", 1,  "tablename_type('MESSAGE', 'VALID_MESSAGE')", True, True]) 

但它似乎沒有識別SQL參數。我是否需要將SQL參數轉換爲python?如果是這樣,那將如何完成?

回答

1

您的第一個參數應該是一個cx_Oracle.Date對象,您可以使用cx_Oracle.Date(2012, 5, 25)構造該對象。我所採用的第三個參數只是一個字符串,你不希望它是一個函數調用,如果是這樣,你可以使用cur.callfunc('tablename_type', ReturnType, ['MESSAGE', 'VALID_MESSAGE'])並將其內聯到你的過程調用中。

+0

太棒了,第一部分對我來說很有意義。對於ReturnType,我是否簡單地給出函數tablename_type()的python等價返回類型? –

+0

ReturnType將是該函數返回的Oracle數據類型,所以如果它返回一個數字,它將是'cx_Oracle.NUMBER'等。 –