【发布时间】:2021-09-23 12:32:43
【问题描述】:
我正在尝试通过使用 Python cx_Oracle 模块调用 fnd_concurrent.wait_for_request 存储过程在 Oracle 中执行等待提交的请求,但遇到错误:cx_Oracle.DatabaseError: ORA-06502: PL/SQL: numeric or value error
FND_CONCURRENT.WAIT_FOR_REQUEST 具有以下签名: (来自文档https://docs.oracle.com/cd/E18727_01/doc.121/e12897/T302934T458258.htm)
function FND_CONCURRENT.WAIT_FOR_REQUEST
(request_id IN number default NULL,
interval IN number default 60,
max_wait IN number default 0,
phase OUT varchar2,
status OUT varchar2,
dev_phase OUT varchar2,
dev_status OUT varchar2,
message OUT varchar2) return boolean;
我用 python 代码调用它:
...
lc_phase = cursor.var(str)
lc_status = cursor.var(str)
lc_dev_phase = cursor.var(str)
lc_dev_status = cursor.var(str)
lc_message = cursor.var(str)
bool_result = cursor.callfunc('fnd_concurrent.wait_for_request', bool, [123456789,5,15,lc_phase,lc_status,lc_dev_phase,lc_dev_status,lc_message])
print('fnd_concurrent.wait_for_request result: ', bool_result)
...
我确实尝试了不同类型的输出参数,例如 cx_Oracle.DB_TYPE_VARCHAR 和 cx_Oracle.STRING,但结果相同。
错误描述了与 cursor.callfunc() 调用完全一致的问题
【问题讨论】:
标签: python oracle plsql cx-oracle