Oracle
 sql >> Database >  >> RDS >> Oracle

Restituisce una procedura memorizzata fuori dalla variabile del cursore in cx_oracle

La chiamata a una procedura accetta una sequenza come parametro e restituisce anche una sequenza.

l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
print(type(l_test))
#>>> <class 'list'>

Quindi puoi accedere al cursore restituito per indice:

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]

Quindi puoi stampare il risultato con un ciclo for

for line in ret_cursor:
    print line

o con print ret_cursor.fetchall() o con il pprint strumento se necessario.

Nella documentazione hai collegato, il valore restituito viene decompresso direttamente in l_query e l_emp :

l_query, l_emp = self.__cursor.callproc("PKG_HR.FIND_EMPLOYEES", [p_query, l_cur])

A proposito, potrebbe essere necessario chiudere il cursore restituito alla fine, con lo stesso metodo del cursore principale:ret_cursor.close() . Altrimenti può generare un'eccezione sulla non è possibile chiudere la connessione .