0% encontró este documento útil (0 votos)
328 vistas2 páginas

Validación de RUC en SQL

La función valida un RUC ingresado como parámetro realizando los pasos del algoritmo de validación de RUC en Ecuador. Extrae cada dígito, lo multiplica por un factor dependiendo de su posición, suma los resultados y realiza cálculos para comparar con el último dígito. Devuelve un texto indicando si el RUC es válido o no.

Cargado por

alvaro4356
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
328 vistas2 páginas

Validación de RUC en SQL

La función valida un RUC ingresado como parámetro realizando los pasos del algoritmo de validación de RUC en Ecuador. Extrae cada dígito, lo multiplica por un factor dependiendo de su posición, suma los resultados y realiza cálculos para comparar con el último dígito. Devuelve un texto indicando si el RUC es válido o no.

Cargado por

alvaro4356
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

Create function dbo.

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

También podría gustarte