使用cx_Oracle的callfunc获取Oracle对象
我正在尝试使用cx_Oracle的cursor.callfunc()来调用一个返回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对象?
非常感谢!
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