diff --git a/add-iban-mieter.sql b/add-iban-mieter.sql deleted file mode 100644 index 880fd94..0000000 --- a/add-iban-mieter.sql +++ /dev/null @@ -1,2 +0,0 @@ -alter table mieter - add column iban varchar(34); \ No newline at end of file diff --git a/format-iban.sql b/format-iban.sql index 87fae3f..26d1b31 100644 --- a/format-iban.sql +++ b/format-iban.sql @@ -1,3 +1,6 @@ +alter table mieter + add column iban varchar(34); + delimiter // create or replace function format_iban(p_iban varchar(34)) returns varchar(34) @@ -30,4 +33,32 @@ begin end; // +create or replace function check_iban(p_iban varchar(34)) returns boolean +begin + declare v_country varchar(2); + declare v_result boolean; + declare v_rearranged_iban varchar(36); + declare v_numeric_iban decimal(36, 0); + declare v_numeric_result decimal(36, 0); + + set v_country = substring(p_iban from 1 for 2); + + if (v_country = 'DE') then + set v_rearranged_iban = concat(substring(p_iban from 5), '1314', substring(p_iban from 3 for 2)); + set v_numeric_iban = cast(v_rearranged_iban as decimal(36, 0)); + set v_numeric_result = v_numeric_iban % 97; + if (v_numeric_result = 1) then + set v_result = TRUE; + else + set v_result = FALSE; + end if; + else + set v_result = TRUE; + end if; + + return v_result; +end; +// + + delimiter ;