2012-06-15 49 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'等。 –