使用cx_Oracle callfunc获取oracle对象

时间:2012-01-30 13:48:15

标签: python cx-oracle

我正在尝试通过使用cx_Oracle的cursor.callfunc()来调用oracle pl / sql函数返回oracle对象,但无法使其工作,并且在文档和网络上都没有找到任何帮助。 我的代码:

connection = cx_Oracle.connect('myuser/mypass@myservice')
cursor = connection.cursor()
result = cursor.var(cx_Oracle.OBJECT)
cursor.callfunc('myfunction', result , [an_arg]) 

Traceback (most recent call last):
  File "...", line nn, in <module>
    result = cursor.var(cx_Oracle.OBJECT)
TypeError: expecting type name for object variables

有人使用callfunc成功获取oracle对象吗?

非常感谢提前。

1 个答案:

答案 0 :(得分:3)

这对我有用:

connection = cx_Oracle.connect('myuser/mypass@myservice')
cursor = connection.cursor()
result = cursor.callfunc('myfunction', cx_Oracle.OBJECT, [an_arg]) 

您需要使用正确的类型替换cx_Oracle.OBJECT;如果不这样做,我将返回以下错误:

  

NotSupportedError:Variable_TypeByValue():未处理的数据类型cx_Oracle.OBJECTVAR

这个网站有一些很好的例子:http://st-curriculum.oracle.com/obe/db/11g/r2/prod/appdev/opensrclang/python/python.htm#t9