Aqui un script ajustado por mi partner Jose Flores que en plena clase de db me envio el truco para luego de tener los registro de rut calcular el codigo verificador, en sp sql 2005.

/****** Script para el comando SelectTopNRows de SSMS  ******/
declare @Rut int
declare @dv varchar(1)
declare @valor int
declare @myRut varchar(8)
set @dv = ”
declare dtDatos cursor for
SELECT [Rut]
FROM [base].[tabla]
order by rut
open dtDatos
FETCH NEXT FROM dtDatos
into @Rut
WHILE @@FETCH_STATUS = 0
BEGIN
 set @myRut=convert(varchar(8),@Rut)
 if (len(@myRut))=8
  begin
  set @valor=0
  set @valor = @valor + convert(int,substring(@myRut,8,1))*2
  set @valor = @valor + convert(int,substring(@myRut,7,1))*3
  set @valor = @valor + convert(int,substring(@myRut,6,1))*4
  set @valor = @valor + convert(int,substring(@myRut,5,1))*5
  set @valor = @valor + convert(int,substring(@myRut,4,1))*6
  set @valor = @valor + convert(int,substring(@myRut,3,1))*7
  set @valor = @valor + convert(int,substring(@myRut,2,1))*2
  set @valor = @valor + convert(int,substring(@myRut,1,1))*3
  set @valor = @valor % 11

  if (@valor = 1)
   begin
   set @dv=’k’
  end

  if @valor = 0
   begin
   set @dv=’0′
  end

  if @valor>1 and @valor<11
  begin
   set @dv=str(11-@valor,1)
  end
 end

 Update [base].[tabla] Set [Dv]=@dv Where Rut=@Rut
 FETCH NEXT FROM dtDatos INTO @Rut

end 
CLOSE dtDatos
DEALLOCATE dtDatos

Comments are closed.