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

Returner en lagret procedure ud af cursorvariabel i cx_oracle

Kaldet til en procedure tager en sekvens som parameter og returnerer også en sekvens.

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

Så du kan få adgang til den returnerede markør ved at indeksere :

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

eller

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

Så kan du printe resultatet med en for-løkke

for line in ret_cursor:
    print line

eller med print ret_cursor.fetchall() , eller med pprint værktøj, hvis det er nødvendigt.

I dokumentationen du har linket, pakkes returværdien direkte ud til l_query og l_emp :

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

I øvrigt skal du muligvis lukke den returnerede markør i slutningen med samme metode som hovedmarkøren:ret_cursor.close() . Ellers kan det give en undtagelse om forbindelsen kan ikke lukkes .




  1. Hvordan bestiller man en MySQL-forespørgsel efter en specifik kolonne?

  2. tilslut R til MySQL med RODBC ved hjælp af dsn

  3. MariaDB Server Database Encryption Basics

  4. Laravel PDOException fejl i Connector.php linje 55