Search code examples
sqlsql-servervalidationstored-proceduresean-13

SQL Server stored procedure EAN code validation


I need to write a stored procedure or funtion to validate the insert of EAN13 code in SQL Server.

Can anyone help me?


Solution

  • Resolved,

    I created a function for validation:

    CREATE FUNCTION [sp_ean](@Ean varchar(max)) RETURNS INT AS
    BEGIN
        DECLARE @Factor INT
        DECLARE @Sum INT
        DECLARE @Len INT
        DECLARE @CC INT
        DECLARE @CA INT
        DECLARE @Result NVARCHAR(MAX)
    
        SET @Len = LEN(@Ean)
        SET @Sum = 0
        SET @Factor = 3
    
        IF @Len = 14 OR @Len = 13 OR @Len = 12 OR @Len = 8 
            BEGIN
                WHILE @Len > 0 
                    BEGIN
                        IF @Len  13
                            BEGIN
                                SET @Sum = @Sum + SUBSTRING(@Ean,@Len,1) * @Factor
                                SET @Factor = 4 - @Factor
                            END
                        SET @Len = @Len - 1
                    END
    
                SET @CC = ((1000 - @Sum) % 10)
                SET @CA = SUBSTRING(@Ean,LEN(@Ean),1)
    
                IF  @CC = @CA
                    BEGIN
                        SET @Result = 0
                    END
                ELSE
                    BEGIN
                        SET @Result = 1
                    END
            END
        ELSE
            BEGIN
                SET @Result = 1
            END
        RETURN (@Result)
        END
    

    Result: 0 to true or 1 to false

    Thanks!