使用cx_Oracle的callfunc获取Oracle对象

3 投票
1 回答
5375 浏览
提问于 2025-04-17 11:57

我正在尝试使用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

撰写回答