Использование cx_Oracle callfunc для получения объектов oracle - PullRequest
3 голосов
/ 30 января 2012

Я пытаюсь вызвать функцию oracle pl / sql, возвращающую объект oracle, используя cx_Oracle's cursor.callfunc (), но не могу заставить его работать, и не нашел помощи ни в документации, ни в сети. мой код:

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

Удалось ли кому-нибудь успешно получить объекты oracle с помощью callfunc?

Большое спасибо заранее.

1 Ответ

3 голосов
/ 20 сентября 2012

Это работает для меня:

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 / ОБЕ / дб / 11g / r2 / прод / AppDev / opensrclang / питон / python.htm # t9

...