У меня есть хранимая процедура Oracle SQL, которая возвращает курсор.
Этот курсор получает в теле хранимой процедуры значение сложного оператора выбора (в приведенном ниже примере я сделал оператор выбора простым).
Затем я хочу использовать курсор для двух вещей:
1. Используйте его как возвращаемое значение хранимой процедуры
2. Используйте его данные для обновления некоторых значений в другой таблице в теле хранимой процедуры
Я не мог найти, как это сделать, поэтому в то же время мне пришлось повторить (сложный) оператор select и позволить другому курсору иметь значение для обновления другой таблицы.
create or replace procedure sp_GetBuildings(returned_cursor OUT SYS_REFCURSOR,
timeFrameHrsParam number) is
v_buildingID Buildings.buildingId%type;
cursor t_result is
select customerId
from (select buildingId from Buildings) b
inner join Customers c on c.building_id = b.building_id;
begin
open returned_cursor for
select customerId
from (select buildingId from Buildings) b
inner join Customers c on c.building_id = b.building_id;
for t in t_result
loop
v_buildingID := t.building_id;
update Buildings set already = 1 where building_id = v_buildingID ;
end loop;
commit;
end sp_GetBuildings;
Можете ли вы помочь мне с решением, которое спасет меня от репликации оператора select?