如何在cx_Oracle中从callfunc获取自定义对象?

问题描述:

我有一个PL/SQL函数my_function返回自定义的对象:如何在cx_Oracle中从callfunc获取自定义对象?

CREATE OR REPLACE TYPE "TP_ACTION" AS OBJECT 
    (
  stop_time timestamp, 
  user_name varchar2(64), 
  error_msg tp_message_l, 

CONSTRUCTOR FUNCTION TP_ACTION(
   usrnm in varchar2 := null 
) RETURN SELF AS RESULT, 

  MEMBER PROCEDURE doClose(pi_session_MD5 IN  VARCHAR2), 
  member procedure setRunStatus(status in varchar2), 
) 

因此在Python我调用该函数:

var_type = cursor.var(cx_Oracle.OBJECT, typename='TP_ACTION') 
cursor.callfunc('my_function', var_type, params) 

之后,我得到异常:

cx_Oracle.NotSupportedError: Variable_TypeByPythonType(): unhandled data type. 

它甚至可以通过调用PL/SQL函数来获得自定义的对象:或者也许有另一种方式来获得它?

绑定Oracle对象的能力仅在未发布(开发)版本的cx_Oracle中可用。这是调用返回对象的函数所需要的。如果你可以使用开发版本,你的代码将会工作;否则,请等待正式发布。