Re: MOVE cursor in plpgsql?
| От | Tomas Vondra |
|---|---|
| Тема | Re: MOVE cursor in plpgsql? |
| Дата | |
| Msg-id | 45CF39E5.9010509@fuzzy.cz обсуждение исходный текст |
| Ответ на | MOVE cursor in plpgsql? ("Webb Sprague" <webb.sprague@gmail.com>) |
| Ответы |
Re: MOVE cursor in plpgsql?
|
| Список | pgsql-general |
> Hi all,
>
> Is there a way to move a cursor in plpgsql in the same way as in
> regular sql? The function below would like to move the cursor back to
> the start each time the cursor runs out of rows, creating pairs of
> integers that are randomly put together.
>
> The "motivation" for this is to randomly assign parts of a
> shakespearian play (N=25) to not enough actors (N=6), giving each
> actor several parts. (To be truly fair, I would have to weight by
> number of lines, but that is for version 2... ) If there is a more
> graceful way to solve the problem, I am interested, but I would like
> to know about the MOVE issue in any case.
Wouldn't it be easier to list the parts in a random order (simply ORDER
BY RANDOM()) and then use modulo by number of actors (but there's no
ROWNUM so a loop is needed anyway). Something like
i := 0;
FOR x IN SELECT .... parts ... LOOP
actor := mod(i,number_of_actors);
i := i + 1;
END LOOP;
This should be fair enough and does not need moving the cursors in
various areas.
t.v.
В списке pgsql-general по дате отправления: