validacionRuc(@ruc char(11)) -- NOMBRE DE FUNCIÓN Y PARÁMETRO
returns char(15) -- TIPO Y TAMAÑO DE DATO QUE SE VA A RETORNAR AS BEGIN -- DECLARAMOS LAS VARIABLES: declare @x char(1), @respuesta char(15) declare @numero int, @i int, @suma int, @j int, @mult int, @div int, @calculo int set @i = 1 --INICIALIZAMOS LAS VARIABLES: set @suma = 0 Set @respuesta = 'RUC NO VALIDO' -- VALIDAMOS LOS DOS PRIMEROS DIGITOS DEL RUC if(left(@ruc,2)='10' or left(@ruc,2)='15' or left(@ruc,2)='17' or left(@ruc,2)='20') -- VALIDAMOS LOS 4 PRIMEROS DIGITOS DEL RUC, MULTIPLICANDO CADA UNO POR 5, 4, 3, 2 RESPECTIVAMENTE set @j = 5 while (@j>1) begin set @x = subString(@ruc,@i,@i+1) -- EXTRAEMOS DIGITO A DIGITO DEL RUC set @numero = convert(int,@x) -- CONVERTIMOS CADA DIGITO DEL RUC EN ENTERO set @mult = @x * @j -- MULTIPLICAMOS CADA NUMERO set @suma = @suma + @mult -- VAMOS SUMANDO EL RESULTADO DE CADA MULTIPLICACION set @i=@i+1 -- VAMOS AUMENTANDO LA VARIABLE @i EN 1 set @j=@j-1 -- VAMOS DISMINUYENDO LA VARIABLE @j EN 1 END -- VALIDAR LOS 6 DIGITOS SIGUIENTES DEL RUC, MULTIPLICANDO CADA UNO POR 7, 6, 5, 4, 3, 2 RESPECTIVAMENTE set @j=7 while (@j>1) begin set @x = subString(@ruc,@i,@i+1) -- EXTRAEMOS DIGITO A DIGITO DEL RUC set @numero = convert(int,@x) -- CONVERTIMOS CADA DIGITO DEL RUC EN ENTERO set @mult = @x * @j -- MULTIPLICAMOS CADA NUMERO set @suma = @suma + @mult -- VAMOS SUMANDO EL RESULTADO DE CADA MULTIPLICACION set @i=@i+1 -- VAMOS AUMENTANDO LA VARIABLE @i EN 1 set @j=@j-1 -- VAMOS DISMINUYENDO LA VARIABLE @j EN 1 END set @div = @suma / 11 -- DIVIDIMOS LA SUMA ENTRE 11 set @calculo = 11 - (@suma - (@div *11)) -- REALIZAMOS EL CALCULO SENCILLO, DONDE 11 ES FIJO set @x = right(@ruc,1) -- EXTRAEMOS EL ULTIMO DIGITO DEL RUC set @numero = convert(int, @x) -- CONVERTIMOS EL ULTIMO DIGITO DEL RUC EN ENTERO -- VERIFICAMOS SI EL RESULTADO DEL CALCULO SENCILLO ES 10 U 11 if (@calculo=10) set @calculo = 0 -- SI ES 10, EL RESULTADO DEL CALCULO TOMA EL VALOR DE 0 else if (@calculo =11 ) set @calculo = 1 -- SI ES 11, EL RESULTADO DEL CALCULO TOMA EL VALOR DE 1 -- VALIDAMOS QUE EL RESULTADO DEL CALCULO SEA IGUAL AL ULTIMO DIGITO DEL RUC if (@calculo=@numero) set @respuesta='RUC VALIDO' -- SI ES IGUAL, ENTONCES EL RUC ES VALIDO return @respuesta -- RETORNAMOS LA RESPUESTA END GO