Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Gibt eine Cursorvariable einer gespeicherten Prozedur in cx_oracle zurück

Der Aufruf einer Prozedur nimmt eine Sequenz als Parameter und gibt auch eine Sequenz zurück.

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

Sie können also über den Index :

auf den zurückgegebenen Cursor zugreifen
ret_cursor = self.__cursor.callproc("prc_get_some_data",[l_cur])[0]

oder

l_test = self.__cursor.callproc("prc_get_some_data",[l_cur])
ret_cursor = l_test[0]

Dann können Sie das Ergebnis mit einer for-Schleife

ausdrucken
for line in ret_cursor:
    print line

oder mit print ret_cursor.fetchall() , oder mit dem pprint Werkzeug, falls erforderlich.

In der Dokumentation Sie verlinkt haben, wird der Rückgabewert direkt nach l_query entpackt und l_emp :

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

Übrigens müssen Sie den zurückgegebenen Cursor möglicherweise am Ende mit derselben Methode wie den Hauptcursor schließen:ret_cursor.close() . Andernfalls kann es eine Ausnahme über die Verbindung kann nicht geschlossen werden auslösen .