La llamada a un procedimiento toma una secuencia como parámetro y también devuelve una secuencia.
l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
print(type(l_test))
#>>> <class 'list'>
Entonces puede acceder al cursor devuelto por índice:
ret_cursor = self.__cursor.callproc("prc_get_some_data",[l_cur])[0]
o
l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
ret_cursor = l_test[0]
Luego puede imprimir el resultado con un bucle for
for line in ret_cursor:
print line
o con print ret_cursor.fetchall()
, o con el pprint
herramienta si es necesario.
En la documentación
ha vinculado, el valor devuelto se descomprime directamente en l_query
y l_emp
:
l_query, l_emp = self.__cursor.callproc("PKG_HR.FIND_EMPLOYEES", [p_query, l_cur])
Por cierto, es posible que deba cerrar el cursor devuelto al final, con el mismo método que el cursor principal:ret_cursor.close()
. De lo contrario, puede generar una excepción sobre la conexión no se puede cerrar .