如何指定cx_Oracle存储函数RECORD返回类型?

时间:2013-04-19 02:03:28

标签: python oracle cx-oracle stored-functions

   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 个答案:

答案 0 :(得分:0)

我已经尝试了很多,但仍然找不到如何使用类型记录。据我所知,类型记录仅在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)
>>> 

^ _ ^