Advertisement
Guest User

Reorder Procedure for rows

a guest
Feb 1st, 2016
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 0.70 KB | None | 0 0
  1. DELIMITER |
  2.  
  3. CREATE PROCEDURE move_old_to_new(old INT, new INT)
  4. proc_label:BEGIN
  5.     DECLARE v_min INT;
  6.     DECLARE v_max INT;
  7.     DECLARE v_gap INT;
  8.     DECLARE v_inc INT;
  9.    
  10.     IF old = new OR old IS NULL OR new IS NULL THEN
  11.         LEAVE proc_label;
  12.     END IF;
  13.    
  14.     SET v_min = old;
  15.     IF new < old THEN
  16.         SET v_min = new;
  17.     END IF;
  18.    
  19.     SET v_max = old;
  20.     IF new > old THEN
  21.         SET v_max = new;
  22.     END IF;
  23.    
  24.     SET v_gap = v_max - v_min + 1;
  25.     SET v_inc = (old - new) / (v_max - v_min);
  26.    
  27.     UPDATE test
  28.        SET order_no = v_min + MOD(order_no - v_min + v_inc + v_gap, v_gap)
  29.      WHERE order_no BETWEEN v_min AND v_max;
  30.      
  31. END;
  32. |
  33.  
  34. DELIMETER ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement