In MySQL:
[code]
CREATE FUNCTION fnElfProef (accountNr INT)
    RETURNS BOOLEAN
BEGIN
    DECLARE i, totaal INT DEFAULT 0;
    WHILE i < 9 DO
        SET i = i+1;
        SET totaal = totaal+(i*(accountNr%10));
        SET accountNr = FLOOR(accountNr/10);
    END WHILE;
    RETURN (totaal%11) = 0;
END
[/code]

In SQL Server:
[code]
CREATE FUNCTION fnElfProef (@accountNr INT)
    RETURNS BIT
AS
BEGIN
    DECLARE @i INT
    SELECT @i = 0
    DECLARE @total INT
    SELECT @total = 0
    WHILE @i < 9 BEGIN
        SELECT @i = @i+1
        SELECT @total = @total+(@i*(@accountNr%10))
        SELECT @accountNr = @accountNr/10
    END
    IF (@total%11) = 0 BEGIN
        RETURN 1
    END
    RETURN 0
END
[/code]

Ook nog maar voor Postgre:
[code]CREATE OR REPLACE FUNCTION fnElfProef (accountNrIn INT)
    RETURNS BOOLEAN
AS 
$function$
    DECLARE i INT; total INT; accountNr INT;
BEGIN
    accountNr := accountNrIn;
    i := 0;
    total := 0;
    WHILE i < 9 LOOP
        i := i+1;
        total := total+(i*(accountNr%10));
        accountNr := accountNr/10;
    END LOOP;
    RETURN (total%11) = 0;
END
$function$ LANGUAGE plpgsql;[/code]