Автор Тема: Объявление процедур  (Прочитано 4253 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн PHP'шкин

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 20
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Объявление процедур
« : 29 Ноября 2007, 21:29:13 »
Здравствуйте! Создается процедура
delimiter //

create procedure largest_order(out largest_id int)
begin
  declare this_id int;
  declare this_amount float;
  declare l_amount float default 0.0;
  declare l_id int;

# установка значения параметра done по умолчанию равным 0 (то есть false)
  declare done int default 0;
# курсор вытаскивает значения из столбцов orderid и amount таблицы orders
  declare c1 cursor for select orderid, amount from orders;
# при достижении конца таблицы значение done становится равным 1 (true)
 declare continue handler for sqlstate \'02000\' set done = 1;
 
  open c1;
# выполняем цикл
  repeat
    fetch c1 into this_id, this_amount;
    if not done then
       if this_amount > l_amount then
        set l_amount=this_amount;
        set l_id=this_id;
       end if;
    end if;
# цикл выполняется пока выполняется это условие
   until done end repeat;
  close c1;
 
  set largest_id=l_id;

end
//

delimiter ;
Вопрос такой: зачем в цикле repeat, выполняющемся до достижения курсором конца таблицы, идет еще одно условие на удачность выполнения функции fetch (выделено Bold\'ом)? Аналогичная форма записи встречается и в справочном руководстве по Mysql, хотя данный скрипт работает и без такого анализа. Зачем это нужно??
Да будет с Вами PHP

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28