【发布时间】:2021-12-22 14:41:40
【问题描述】:
我不熟悉 PL/SQL,只是无法将有效的原始查询转换为 Python 代码。
这是原始查询:
DECLARE
returntype MY_PKG_1.MY_DATA_TYPE;
BEGIN
SELECT *
BULK COLLECT INTO returntype
FROM TABLE(MY_PKG_2.MY_FUNC(
param_1 => 'some data',
param_2 => 'some more data'
));
END;
这是一个运行良好的有效查询,我可以使用 cursor.execute() 运行它而不会出错。但是如何获取返回的行呢? 我尝试了以下方法:
returntype = connection.gettype('MY_PKG_1.MY_DATA_TYPE')
cursor = connection.cursor()
results = cursor.callfunc('MY_PKG_2.MY_FUNC', returntype, ['some data', 'some more data'])
cursor.commit()
但我收到错误“ORA-04043:对象 MY_PKG_1.MY_DATA_TYPE 不存在”。
【问题讨论】:
-
您的 PL/SQL 块不会向调用者返回任何内容,因此没有要返回的行。是否有一些理由让您不只从 Python 代码中运行
select语句,而不是bulk collect?我看不到集合类型、局部变量和 PL/SQL 块正在完成什么。