首页 > 解决方案 > 用python获取oracle函数的返回值

问题描述

我的 oracle 数据库中有一个 PL/SQL 函数,它返回一个自定义类型,它是一个数字表。在 sql 控制台中运行此函数可以正常工作。

在 python 脚本中获取结果的正确方法是什么?

对于内置类型,我可以执行以下操作:

return_value = cursor.var(cx_Oracle.STRING)
cursor.callfunc("myfunction", return_value, [list_of_params])

但我不知道如何处理自定义类型。

标签: pythonoracle

解决方案


如果一个函数返回一个自定义类型,它是一个嵌套表或可变数组,那么使用TABLE函数读取值是理想的。

假设您的函数定义类似于

create or replace function "myfunction"(p_in1 int, p_in2 varchar2) 
  return my_custom_type AS
  ..
  ..

您可以这样做并像任何其他查询结果一样获取结果。您也不必传递类型名称。

cursor.execute("""select * from TABLE( "myfunction"(:p_in1,:p_in2))""", (1,'TEXT') )

推荐阅读