oracle-databasevalidationplsqliban

Validating IBAN in PL/SQL


I'm trying to find some ready-to-use code (yes, I mean teh codez) to validate an IBAN account number in PL/SQL.

Does anyone know about some samples? I think someone should have already implemented that...

Thanks


Solution

  • This one is surely not copyrighted:

    declare
    as_iban varchar2(34);
    ln_iban number(36, 0);
    begin
        as_iban := 'enter your IBAN here';
    
        ln_iban := to_number(substr(as_iban, 5));
        ln_iban := ln_iban * 100 + (ascii(substr(as_iban, 1, 1)) - 55);
        ln_iban := ln_iban * 100 + (ascii(substr(as_iban, 2, 1)) - 55);
        ln_iban := ln_iban * 100 + to_number(substr(as_iban, 3, 2));
        ln_iban := ln_iban mod 97;
    
        if ln_iban is null or ln_iban <> 1 then 
            raise_application_error(-2e4, 'invalid IBAN: ' || as_iban);
        end if; 
    end;
    /