CREATE OR REPLACE FUNCTION supply_every_stock(amount INTEGER) RETURNS void AS $$ DECLARE stoCursor CURSOR IS SELECT sto_quantity FROM Stock FOR UPDATE; stoQuantity Stock.sto_quantity%TYPE; BEGIN RAISE NOTICE 'Iterate on existing stocks only'; -- Iterate on storage OPEN stoCursor; LOOP FETCH stoCursor INTO stoQuantity; EXIT WHEN stoQuantity IS NULL; RAISE NOTICE 'Supply %', amount; UPDATE Stock SET sto_quantity = sto_quantity + amount WHERE CURRENT OF stoCursor; END LOOP; CLOSE stoCursor; RAISE NOTICE 'End'; END; $$ LANGUAGE plpgsql;