sql >> Database >  >> RDS >> Oracle

Retourneer een opgeslagen procedure uit cursorvariabele in cx_oracle

De aanroep van een procedure neemt een reeks als parameter en retourneert ook een reeks.

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

U kunt dus toegang krijgen tot de geretourneerde cursor via index:

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

of

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

Vervolgens kunt u het resultaat afdrukken met een for-lus

for line in ret_cursor:
    print line

of met print ret_cursor.fetchall() , of met de pprint hulpmiddel indien nodig.

In de documentatie je hebt gelinkt, wordt de retourwaarde direct uitgepakt naar l_query en l_emp :

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

Trouwens, het kan zijn dat je de geretourneerde cursor aan het einde moet sluiten, met dezelfde methode als de hoofdcursor:ret_cursor.close() . Anders kan het een uitzondering veroorzaken over de verbinding kan niet worden gesloten .




  1. MYSQL - Twee tabellen samenvoegen

  2. Hoe PostgreSQL bytea kolom hex decoderen naar int16/uint16 in r?

  3. ML{.NET} Inleiding

  4. Door Mysqli opgestelde verklaring (preventie van SQL-injectie)