create or replace function test_cursor() returns void as $$ declare _my_cursor(p_co_id text) for select * from crm_db.ht_co_addon where co_id = p_co_id; _idx int := 0; _row record; begin -- Example 1 for _row in _my_cursor('000000000666') loop _row.co_addon_id := _idx; _idx := _idx + 1; end loop; -- Example 2 open _my_cursor('000000000666') loop fetch _my_cursor into _row exit when not found raise notice 'co_addon_id=%', _row.co_addon_id end loop close _my_cursor end; $$ language plpgsql security definer;