cx_Oracle:使用PL / SQL RECORD类型作为存储过程的参数

时间:2017-07-27 21:03:03

标签: python oracle cx-oracle

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

这是我的python代码:

if [ docker images -f dangling=true -q|wc -l > 0 ]; then docker rmi --force $(docker images -f dangling=true -q);fi

这会导致以下异常:

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])

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

1 个答案:

答案 0 :(得分:1)

我已经能够通过使用

解决这个问题
type_obj = connection.gettype('AP_VENDOR_PUB_PKG_R_VENDOR_RE')
obj = type_obj.newobject()

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