2013-04-19 43 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) 
>>> 

^_^