Bonjour à tou(te)s
Je viens d'écrire une petite fonction pour vérifier la validité d'un SIRET en me basant sur un code JavaScript trouvé sur le net.
Pour la tester, je fais:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
36
37
38
39
40
41
42 FUNCTION EstSiretValide(Siret varchar(255)) RETURNS tinyint(1) BEGIN DECLARE somme int; DECLARE tmp int; DECLARE LongueurSiret int; DECLARE I int; -- Longueur 14 obligatoirement et QUE des chiffres IF Siret REGEXP '^[0-9]{14}$' = FALSE THEN RETURN FALSE; END IF; SET I = 0; Loop_Label: LOOP IF (I % 2) = 1 THEN SET tmp = CAST( SUBSTRING(Siret, I) AS SIGNED) * 2; IF tmp > 9 THEN SET tmp = tmp - 9; END IF; ELSE SET tmp = CAST( SUBSTRING(Siret, I) AS SIGNED); END IF; SET somme = somme + tmp; IF I = 14 THEN LEAVE `Loop_Label`; END IF; SET LongueurSiret = LongueurSiret + 1; END LOOP; IF (somme % 10) = 0 THEN RETURN TRUE; END IF; RETURN FALSE; END
Et là, je récolte une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT EstSiretValide("79942059100015");Si je supprime le premier chiffre du paramètre, plus d'erreur."Truncated incorrect INTEGER value"
Quelqu'un saurait-il me dire le pourquoi du comment svp ?
Merci d'avance,
oups /// Trouvé :-(
Je n'incrémente pas la bonne valeur dans la boucle : SET LongueurSiret = LongueurSiret + 1; au lieu de SET I = I + 1;.
Désolé
Partager