2013-04-19 17 views
1
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的正确方法是什么?如何指定cx_Oracle存储函数RECORD返回类型?

curs.callfunc('my_func', x_type, [1]) 

感谢,

回答

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; 

在蟒蛇

db=cx_Oracle.connect(...) 

>>> cursor=db.cursor() 
>>> r=cursor.callfunc('fn_return_curs',cx_Oracle.CURSOR,[5]) 
>>> r.fetchone() 
(5, 'A', 1) 
>>> 

^_^