Función para obtener dígito verificador en Sql Server

En esta oportunidad les presento una función muy util que los ayudará al momento de querer calcular el dígito verificador de cualquier rut.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:	
-- Create date: <11/08/2015>
-- Description:	
-- =============================================
CREATE FUNCTION FnObtieneDigitoVerificador (@rut INT) 

RETURNS varchar(1) 
AS
BEGIN
 
DECLARE @dv VARCHAR(1);
DECLARE @Digito INT;
DECLARE @Contador INT;
DECLARE @Multiplo INT;
DECLARE @Acumulador INT;
 
SET @Contador = 2;
SET @Acumulador = 0;
SET @Multiplo = 0;
 
WHILE(@rut!=0)
BEGIN

	SET @Multiplo = (@rut%10) * @Contador;
	SET @Acumulador = @Acumulador + @Multiplo;
	SET @rut = FLOOR(@rut / 10);
	SET @Contador = @Contador + 1;
	
	IF(@Contador = 8) 
	BEGIN
		SET @Contador = 2;
	END;
END;
 
SET @Digito = 11 - (@Acumulador%11);
 
SET @dv = LTRIM(RTRIM(CAST(@Digito as CHAR(2))));
 
IF(@Digito = 10) 
BEGIN
	SET @dv = 'K';
END;
 
IF(@Digito = 11)
BEGIN
	SET @dv = '0';
END;
 
RETURN @dv;
 
END

Espero sea de vuestra utilidad,

Saludos

También te podría gustar...

Deja una respuesta

Tu dirección de correo electrónico no será publicada.