我试图从cx_Oracle调用AP_VENDOR_PUB_PKG.CREATE_VENDOR(这是Oracle R12存储过程),它需要一个预定义的PL / SQL RECORD类型的参数。 (AP_VENDOR_PUB_PKG.R_VENDOR_REC_TYPE)

这是我的python代码:

connection = cx_Oracle.connect(...)
cursor = connection.cursor()
obj = cursor.var(cx_Oracle.Object,
                              typename='AP_VENDOR_PUB_PKG.R_VENDOR_REC_TYPE')
result = cursor.callproc('AP_VENDOR_PUB_PKG.CREATE_VENDOR',
                         parameters=["1.0", "T", "T",
                                     "fnd_api.g_valid_level_full", obj])


这导致以下异常:

cx_Oracle.InterfaceError: object type not associated with bind variable

我究竟做错了什么?如何调用需要记录类型的存储过程?

最佳答案

我已经能够通过使用解决这个问题

type_obj = connection.gettype('AP_VENDOR_PUB_PKG_R_VENDOR_RE')
obj = type_obj.newobject()


请注意,名称限制为29个字符,并且句点(。)已替换为下划线(_)。

关于python - cx_Oracle:使用PL/SQL RECORD类型作为存储过程的参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45360966/

10-12 12:42
查看更多