Я создал эту функцию для повторного упорядочения порядкового номера в таблице спецификации (bomitem).
CREATE OR REPLACE FUNCTION seqincr(integer)
RETURNS SETOF bomitem AS
$BODY$
DECLARE
pItemid ALIAS FOR $1;
_row bomitem%ROWTYPE;
seqint int;
_id int;
BEGIN
seqint=8;
FOR _row IN SELECT *
FROM bomitem
WHERE ((bomitem_parent_item_id=pItemid))
LOOP
RETURN NEXT _row;
_id = _row.bomitem_id;
seqint = seqint+2;
update bomitem set bomitem_seqnumber = seqint where bomitem_id=_id;
END LOOP;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
ROWS 1000;
ALTER FUNCTION seqincr(integer)
OWNER TO admin;
Пример работает на отдельного человека bomitem_parent_item_id
, как показано ниже:
SELECT * from seqincr(14917);
Я бы хотел переписать эту функцию для циклического перебора
SELECT distinct bomitem_parent_item_id FROM bomitem;
так, чтобы он повторял всю таблицу спецификации.