Re: PL/pgSQL loops?

Поиск
Список
Период
Сортировка
От Stephan Szabo
Тема Re: PL/pgSQL loops?
Дата
Msg-id 20011128194857.G37828-100000@megazone23.bigpanda.com
обсуждение исходный текст
Ответ на Re: PL/pgSQL loops?  ("Johnny J\xF8rgensen" <pgsql@halfahead.dk>)
Ответы Re: PL/pgSQL loops?  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-sql
Something like the below seemed to make it work for me under
7.2b3:
CREATE FUNCTION cleanup_order(integer,integer)RETURNS booleanAS ' -- [INT order_id] cleanup_order ( INT person_id, INT
order_id)-- purpose: when a session is interrupted, the order is left open, when the next session is initiated,--
         transfer the items to a new order, and mark the older order void ( so we can tell if f.x. people abort--
        an order in the payment phase, e.g. indicating they dont like our payment options )
 
 DECLARE  p_id  ALIAS FOR $1;  o_id  ALIAS FOR $2;   ord record;   itm record;
 BEGIN
  -- loop through existing open orders from this person, excluding the first, being the active one  FOR ord IN SELECT
idFROM ordre WHERE person_id = p_id AND status = 1 AND id != o_id  LOOP       -- loop through items linked to the
currentlylooped order       FOR itm IN SELECT id FROM item WHERE ordre_id = ord.id       LOOP
 
            -- relink item to latest order            UPDATE item SET ordre_id = o_id WHERE id = itm.id;
       END LOOP;
       -- mark old orders as void       UPDATE ordre SET status = 0 WHERE id = ord.id;
  END LOOP;
  RETURN true;
 END;'LANGUAGE 'plpgsql';




В списке pgsql-sql по дате отправления:

Предыдущее
От: "Haywood J'Bleauxmie"
Дата:
Сообщение: distinct() vs distinct on ()
Следующее
От: Tom Lane
Дата:
Сообщение: Re: distinct() vs distinct on ()