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