[ sojic @ 06.12.2007. 17:58 ] @
Nasao sam funkciju za proracun checksum cifre EAN13

http://www.elitesecurity.org/t298408

Pokusavam da "prevedem" funkciju za MySQL ali dobijem 1064 gresku.

Evo funkcije

Code:


CREATE FUNCTION `ean13checksum` (eankod varchar(12)) RETURNS char(1)
BEGIN
    DECLARE Result char(1);

    DECLARE charPos integer;
    DECLARE csumTotal integer;

    SET charPos = length(eankod);
    SET csumTotal = 0;

    WHILE charPos > 0 DO
        IF ((charPos % 2) = 0) THEN
            SET csumTotal = csumTotal + CAST(substr(eankod, charPos, 1) AS integer);
        ELSE
            SET csumTotal = csumTotal + 3 * CAST(SUBSTR(eankod, charPos, 1) AS integer);
        END IF

        SET charPos = charPos -1;
        CONTINUE
    END

    DECLARE remainder integer;

    SET remainder = 10 - csumTotal MOD 10;
    SET remainder = remainder MOD 10;

    SET Result = CAST(remainder AS int);

    RETURN Result;

END