【问题标题】:How to specify cx_Oracle stored function RECORD return type?如何指定 cx_Oracle 存储函数 RECORD 返回类型?
【发布时间】: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])

谢谢,

【问题讨论】:

    标签: python oracle cx-oracle stored-functions


    【解决方案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)
    >>> 
    

    ^_^

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-23
      • 2020-03-24
      • 2020-09-10
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 2019-06-23
      • 2013-02-22
      相关资源
      最近更新 更多