30 lines
654 B
SQL
30 lines
654 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` FUNCTION `vn`.`testNIF`(vNIF VARCHAR(9))
|
|
RETURNS tinyint(1)
|
|
DETERMINISTIC
|
|
BEGIN
|
|
|
|
DECLARE vIndice INT;
|
|
DECLARE vParteNumerica DECIMAL(8,0);
|
|
DECLARE vLetra VARCHAR(1);
|
|
DECLARE vLetrasPosibles VARCHAR(24) DEFAULT "TRWAGMYFPDXBNJZSQVHLCKE";
|
|
|
|
SET vLetra = SUBSTRING(vNIF, 9, 1);
|
|
|
|
SET vParteNumerica = CAST(SUBSTRING(vNIF, 1, 8) AS DECIMAL(8,0));
|
|
|
|
SET vIndice = Round(vParteNumerica MOD 23, 0) + 1;
|
|
|
|
If SUBSTRING(vLetrasPosibles, vIndice, 1) = vLetra Then
|
|
|
|
RETURN TRUE;
|
|
|
|
ELSE
|
|
|
|
RETURN FALSE;
|
|
|
|
END IF;
|
|
|
|
END$$
|
|
DELIMITER ;
|