sql >> Databasteknik >  >> RDS >> Oracle

Returnera en lagrad procedur ut markörvariabel i cx_oracle

Anropet till en procedur tar en sekvens som parameter och returnerar också en sekvens.

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

Så du kan komma åt den returnerade markören genom att indexera :

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]

Sedan kan du skriva ut resultatet med en for loop

for line in ret_cursor:
    print line

eller med print ret_cursor.fetchall() , eller med pprint verktyg om det behövs.

I dokumentationen du har länkat, packas returvärdet upp direkt till l_query och l_emp :

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

Förresten, du kan behöva stänga den returnerade markören i slutet, med samma metod som huvudmarkören:ret_cursor.close() . Annars kan det skapa ett undantag om att anslutningen inte kan stängas .




  1. Finns det några bra PostgreSQL-klienter för linux?

  2. Infogar du flera rader i en enda SQL-fråga?

  3. mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows etc... förväntar sig att parameter 1 är resurs

  4. Välj var första bokstaven i ett intervall (PostgreSQL)