首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回%ROWTYPE的Python调用函数

返回%ROWTYPE的Python调用函数
EN

Stack Overflow用户
提问于 2019-09-04 14:11:49
回答 1查看 1.1K关注 0票数 1

我正在尝试使用Python和cx_Oracle从遗留的Oracle函数中读取数据。该函数的声明如下:

在ITEM_PACKAGE中:

代码语言:javascript
复制
FUNCTION get_item (p_itemName IN item.item_name%TYPE)
  RETURN item%ROWTYPE;

函数从项目表中返回一行,如下所示:

代码语言:javascript
复制
TABLE ITEM_SCHEMA.ITEM {
  ITEM_ID NUMBER(*,0) NOT NULL,
  CREATON_DATE DATE NOT NULL,
  DESCRIPTION VARCHAR2(4000),
  …
}

我试图使用cx_Oracle按如下方式调用该函数:

代码语言:javascript
复制
return_type = connection.gettype('ITEM_SCHEMA.ITEM%ROWTYPE')
params = ['my_item_name']
cursor = connection.cursor()
result = cursor.callfunc('ASCHEMA.ITEM_PACKAGE.get_item', return_type, params)

其结果是:

代码语言:javascript
复制
Exception: Varaible_TypeByPythonType(): unhandled_data_type

我还尝试为ROWTYPE调用cursor.var():

代码语言:javascript
复制
return_type = cursor.var(connection.gettype('ITEM_SCHEMA.ITEM%ROWTYPE'))

其结果是:

代码语言:javascript
复制
cx_Oracle.NotSupportedError: Varaible_TypeByPythonType(): unhandled_data_type

有人有关于如何使用cx_Oracle调用返回%ROWTYPE的函数的示例吗?

我是cx_Oracle新手,并且成功地调用了返回简单类型(如cx_Oracle.STRING,甚至cx_Oracle.CURSOR )的存储过程,但我不知道如何处理%ROWTYPE。

编辑: saw post:Oracle:使用PL/SQL记录类型作为存储过程的参数

试着在"cx_type“上调用newobject(),没有joy。

编辑:在最初的文章中,我调用了cursor.callproc()而不是cursor.callfunc()

编辑:我看到了先知?

它说“绑定Oracle对象的能力仅在未发布(开发)版本的cx_Oracle中可用”。我现在使用的是最新的cx_oracle版本7.2.2。7.2.2版应该支持这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-04 19:29:04

这个示例应该可以帮助您找到如何实现它。表%行类型是PL/SQL记录,因此必须作为对象处理。如果这不起作用,请提供用于调用存储过程和存储过程定义的完整代码。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57790318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档