3

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

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 对象吗?

提前谢谢了。

4

1 回答 1

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

于 2012-09-19T20:12:02.407 回答