salix/db/routines/vn2008/procedures/niching.sql

50 lines
888 B
SQL

DELIMITER $$
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`niching`(IN i_ini INT, IN i_end INT
, IN i_bal INT, IN i_col INT )
BEGIN
DECLARE i INT(5);
DECLARE j INT(5);
DROP TEMPORARY TABLE IF EXISTS labels;
CREATE TEMPORARY TABLE `labels`
(`label` VARCHAR(15) NULL)
ENGINE=MEMORY DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
WHILE i_ini <= i_end DO
SET i = i_bal;
WHILE i > 0 DO
SET j = i_col;
IF j = 0 THEN
INSERT INTO labels(label)
VALUES (CONCAT(i_ini,IF(i=0,' ',char(64 + i))));
ELSE
WHILE j > 0 DO
INSERT INTO labels(label)
VALUES (CONCAT(i_ini,char(64 + i), j));
SET j = j - 1;
END WHILE;
END IF;
SET i = i - 1;
END WHILE;
SET i_ini = i_ini + 1;
END WHILE;
SELECT CONCAT('*',label,'*') as label, label as id FROM labels;
END$$
DELIMITER ;