Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не могу получить результат процедурного кода, не дает ошибок но и результата нет
 
 автор: Serhii   (28.04.2018 в 11:18)   письмо автору
 
 


DROP PROCEDURE IF EXISTS `replacebnd`;
delimiter $$
CREATE PROCEDURE replacebnd()
BEGIN
  DECLARE done INT DEFAULT FALSE;
  DECLARE done2 INT DEFAULT FALSE;
  DECLARE ido INT DEFAULT 0;
  DECLARE brand VARCHAR(255) DEFAULT '';
  DECLARE captiono VARCHAR(255) DEFAULT '';
  DECLARE brands VARCHAR(955) DEFAULT '';
  DECLARE hyphen VARCHAR(1) DEFAULT '-';
  DECLARE plus VARCHAR(1) DEFAULT '+';
  DECLARE comma VARCHAR(1) DEFAULT ',';
  DECLARE space VARCHAR(1) DEFAULT ' ';
  DECLARE upperc VARCHAR(255) DEFAULT '';
  DECLARE element VARCHAR(255) DEFAULT '';
  DECLARE camel VARCHAR(255) DEFAULT '';
/* В первом блоке получаю названия брендов и записуваю их в переменную через запятую*/
     BLOCK1: BEGIN
          DECLARE cur1 CURSOR FOR SELECT caption FROM brand_content;
          DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
          OPEN cur1;
           iterator1: LOOP
         FETCH cur1 INTO brand;
           IF done THEN
          LEAVE iterator1;
         END IF;
         SET brand = REPLACE(brand, plus, comma); 
         SET brand = REPLACE(brand, space, comma); 
         SET brand = REPLACE(brand, hyphen, comma);
         SET brand = LCASE(brand);
         SET brands = CONCAT(brand, ',', brands);
          END LOOP iterator1;  
        CLOSE cur1;
      
     END BLOCK1;
/*Во втором блоке получаю названия товаров*/
  BLOCK2: BEGIN
  DECLARE cur2 CURSOR FOR SELECT id, caption FROM catalog_items_content;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET done2 = TRUE;
  OPEN cur2;
    iterator2: LOOP
      IF done2 THEN
      LEAVE iterator2;
    END IF;
    FETCH cur2 INTO ido, captiono; 
/*В третьем блоке пробую удалить названия брендов из названий товаров и обновить таблицу, ничего не получаеться*/
                 BLOCK3: BEGIN
                 iterator3 : LOOP    
                 
                SET element = SUBSTRING_INDEX(brands, ',', 1);
                SET brands = SUBSTRING(brands, LENGTH(element)+2);
                SET captiono = REPLACE(captiono, element, '');
                SET camel =   CONCAT(UCASE(LEFT(element, 1)), LCASE(SUBSTRING(element, 2)));
                SET captiono = REPLACE(captiono, camel, '');
                SET upperc =  UCASE(element);
                SET captiono = REPLACE(captiono, upperc, ''); 
                SET captiono = TRIM(TRAILING space FROM captiono);
                SET captiono = TRIM(TRAILING hyphen FROM captiono);
                SET captiono = TRIM(TRAILING comma FROM captiono);
                SET captiono = TRIM(TRAILING space FROM captiono);            
                UPDATE catalog_items_content SET caption = captiono  WHERE id = ido;
                IF LOCATE(',', brands) > 0  THEN
                    ITERATE iterator3;
                  ELSE 
                LEAVE iterator3;
                   END IF;
                END LOOP iterator3;
                END BLOCK3;

    END LOOP iterator2;
      CLOSE cur2;
     END BLOCK2; 

END$$
CALL replacebnd();

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования