python - 用python获取oracle函数的返回值
问题描述
我的 oracle 数据库中有一个 PL/SQL 函数,它返回一个自定义类型,它是一个数字表。在 sql 控制台中运行此函数可以正常工作。
在 python 脚本中获取结果的正确方法是什么?
对于内置类型,我可以执行以下操作:
return_value = cursor.var(cx_Oracle.STRING)
cursor.callfunc("myfunction", return_value, [list_of_params])
但我不知道如何处理自定义类型。
解决方案
如果一个函数返回一个自定义类型,它是一个嵌套表或可变数组,那么使用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') )
推荐阅读
- mysql - 在没有IFNULL的sql中使用加法时如何将null视为0
- angular - Angular - 像点击地址栏一样更改路线
- wpf - 绑定到窗口的标题并不总是有效
- php - laravel 8 中的错误参数
- gitlab - Gitlab CI 不测试代码是否没有变化(pytest-testmon)
- ios - Xamarin 应用程序在一天未打开后在启动时崩溃
- sql-server - 提高 Debezium Kafka 连接器的吞吐量
- c# - Hangfire 是否支持一次性(非重复)cron 作业?
- tor - Tor没有在启动时干净地启动
- mongodb - Mongodb Atlas 连接问题