SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.10.2010 11:46:51

Герман Клюшин
Участник
Откуда: Севастополь
Зарегистрирован: 17.11.2008
Сообщений: 13

Курсор в хранимой процедуре

Вот пример кода:


  DECLARE curFrag CURSOR FOR
    SELECT id, name, space, distance, (space + IF(space=quant_left,10,0) - distance - ABS(space - quant_left)*2) AS rate
    FROM temp_distance
    ORDER BY rate DESC, name;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

  SET done = 0;
  SET quant_left = quant;
  OPEN cur1;
  frag: REPEAT

      FETCH cur1 INTO tid, tname, tspace, tdistance, trate;
      IF done OR quant_left<=0 THEN LEAVE frag; END IF;
      IF quant_left < tspace THEN
          SET tquantity = quant_left;
      ELSE
          SET tquantity = tspace;
      END IF;

      SET quant_left = quant_left - tquantity;

  UNTIL done OR quant_left<=0 END REPEAT;
  CLOSE cur1;
 

То есть надо чтобы бралось несколько записей с максимальной оценкой (rate). После каждой выбранной записи оценки должны пересчитаться. После того, как все кол-во было размещено, нужно повторить алгоритм с другой формулой оценки. И так 3 раза. Подскажите какой-то вариант.

Отредактированно Герман Клюшин (21.10.2010 11:52:48)


Иисус - Бог неба и земли!

Неактивен

 

#2 21.10.2010 22:51:36

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Курсор в хранимой процедуре

А в чем вопрос? Вы какой-то вариант написали, чем он Вас не устраивает?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson