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 29 30 31 32 33 34 35
| DELIMITER //
CREATE FUNCTION funct_id_stockdate(idExercice int, magasin varchar(50)) RETURNS varchar(25) DETERMINISTIC
BEGIN
DECLARE val1 int;
DECLARE val2, val3, val4, val5 varchar(25);
-- Récupération de la dernièr valeur de val_seq pour la table StockDate
SELECT val_seq INTO val1 FROM param_seq WHERE tables = 'StockDate';
SET val1 = val1 + 1;
-- Début formatige de la valeur auto-incrément sous le format 0001, 0002 , ..., 9999
IF(val1 < 10) THEN
SELECT CONVERT(val1, char);
SET val2 = CONCAT('000',val1);
ELSEIF(val1 <100 AND val1>9) THEN
SELECT CONVERT(val1, char);
SET val2 = CONCAT('00',val1);
ELSEIF(val1 <1000 AND val1>99) THEN
SELECT CONVERT(val1, char);
SET val2 = CONCAT('0',val1);
ELSE
SELECT CONVERT(val1, char);
SET val2 = val1;
END IF;
-- Fin formatage
-- conversion id EXERCICE en chaine de caractère
SELECT CONVERT(idExercice, char);
-- récupération des 3 premières lettre du nom du Magasin en majuscule
SET val3 = SUBSTR(UPPER(magasin), 1, 3);
-- Concaténation de l'ID exercice et 3 premières lettre du nom du Magasin en majuscule
SET val4 = CONCAT(idExercice,val3);
-- concaténation de la chaine précédente (val4) et la chaine auto-incrément
SET val5 = CONCAT(val4,val2);
RETURN val5;
END//
DELIMITER ; |
Partager