如何指定 cx_Oracle 存储函数 RECORD 返回类型?
Posted
技术标签:
【中文标题】如何指定 cx_Oracle 存储函数 RECORD 返回类型?【英文标题】:How to specify cx_Oracle stored function RECORD return type? 【发布时间】:2013-04-19 02:03:28 【问题描述】: CREATE OR REPLACE my_package as
TYPE x_type IS RECORD a_val number,
b_val varchar2(20),
c_val boolean ;
FUNCTION my_func ( d number )
RETURN x_type;
在 cx Oracle 代码中指定 x_type 的正确方法应该是什么?
curs.callfunc('my_func', x_type, [1])
谢谢,
【问题讨论】:
【参考方案1】:我尝试了很多,但仍然找不到如何使用类型记录。据我所知,类型记录仅在 pl/sql 中支持,所以是否可以在 sql 中调用它是一个问题。 我建议你可以使用游标代替记录。 作为您的参考:
create or replace function FN_RETURN_CURS(X NUMBER) return SYS_REFCURSOR is
C SYS_REFCURSOR;
begin
OPEN C FOR
SELECT X, 'A', 1 FROM DUAL;
return(C);
end FN_RETURN_CURS;
在python中
db=cx_Oracle.connect(...)
>>> cursor=db.cursor()
>>> r=cursor.callfunc('fn_return_curs',cx_Oracle.CURSOR,[5])
>>> r.fetchone()
(5, 'A', 1)
>>>
^_^
【讨论】:
以上是关于如何指定 cx_Oracle 存储函数 RECORD 返回类型?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 和 Cx_Oracle 调用带有 XMLTYPE 输入和输出参数的 Oracle 存储过程
在 to_date 函数中使用 cx_oracle 变量时无法正确绑定