Luhn test of credit card numbers: Difference between revisions

no edit summary
No edit summary
No edit summary
Line 1,466:
 
=={{header|PL/SQL}}==
<lang PL/SQL>
 
FUNCTION algoLuhn ( p_numeroVerif VARCHAR2 )
RETURN NUMBER
Line 1,476:
v_nbCar NUMBER;
BEGIN
v_nbCar := LENGTH(p_numeroVerif);
v_nbCar := LENGTH(p_numeroVerif);
FOR i IN 1..v_nbCar
Line 1,485 ⟶ 1,483:
v_NBi := TO_NUMBER(SUBSTR(p_numeroVerif,v_nbCar+1-i,1));
v_somme := v_somme -- Incrément sur l'existant
+ MOD(i,2) * v_nbi -- Si rang impair => on prend la valeur telle quelle => NB
+ MOD(i+1,2) * SIGN(-SIGN(v_Nbi-4)+1) * (2*v_NBi) -- Si rang pair et nombre inférieur ou égal à 4 => (NB * 2)
+ MOD(i+1,2) * SIGN( SIGN(v_Nbi-5)+1) * (2*v_NBi-9) ; -- Si rang pair et nombre supérieur à 4 => (2*NB - 9)
END LOOP;
Anonymous user