dbo.Proceso_Padron_electoral_paso4

Description

Properties

Name Value
ANSI Nulls ON

True

Quoted Identifier ON

True

Encrypted

False

Execute As
Assembly

SQL Script

Copy
SET QUOTED_IDENTIFIER, ANSI_NULLS ON
GO
/*
exec [Proceso_Padron_electoral_paso4] 

*/

CREATE OR ALTER PROCEDURE dbo.Proceso_Padron_electoral_paso4 
-- Los que sacando acentos, el nombre_persona de padron comienza con el apellido
AS
BEGIN
 SET NOCOUNT ON;

 declare @id_padron int = null,
   @sexo varchar(1) = null,
   @apellidos varchar(500) = null,
   @nombres varchar(500) = null,
   @nombre_encontrado varchar(200) = null, 
   @procesados int = 0, 
   @actualizados int = 0,
   @nombre_anterior varchar(200) = null, 
   @nombre_actual   varchar(200) = null
   
 DECLARE X_cursor CURSOR FOR
   select top 1000 padron_procesado.id_padron, padron_procesado.sexo, padron_procesado.apellidos, padron_procesado.nombres, 
     padrones.nombre_persona 
     from padron_procesado 
     left join padrones on (padrones.id_padron = padron_procesado.id_padron and isnull(padron_procesado.id_padron,0) != 0)
        where procesado = 1 and nombre_persona_anterior_en_padron is null 
     and (isnull(padrones.modificado_por,'') != 'R' or padrones.fecha_modificado_por = '2024-10-01 00:00:00')

 OPEN X_cursor
 FETCH NEXT FROM X_cursor INTO @id_padron, @sexo, @apellidos, @nombres, @nombre_encontrado
 WHILE @@fetch_status = 0
 BEGIN 

  set @nombre_anterior   = @nombre_encontrado
  set @nombre_encontrado = dbo.elimina_acentos(@nombre_encontrado)

  set @nombres   = REPLACE(@nombres, '''',' ')
  set @apellidos = REPLACE(@apellidos, '''',' ') 
  set @nombres   = ltrim(rtrim(@nombres))
  set @apellidos = ltrim(rtrim(@apellidos))
  set @apellidos = dbo.elimina_acentos(@apellidos)
  set @nombres   = dbo.elimina_acentos(@nombres)
  
  if (@apellidos like '%' + @nombres)
   set @apellidos = replace(@apellidos,@nombres,'') -- borro el nombre del apellido

  set @nombre_actual = ltrim(rtrim(@apellidos)) + ' ' + @nombres
  set @nombre_actual = REPLACE(@nombre_actual, '  ',' ')

  if (@nombre_encontrado like @nombre_actual + '%')
      set @nombre_actual = @nombre_encontrado
  if (@nombre_actual != @nombre_anterior)
  begin
   select @id_padron as id_padron, @nombre_encontrado encontrado, @nombre_anterior anterior, @nombre_actual actual, @apellidos + ' ' + @nombres ape_nom, 'actualiza' 
   update padrones 
    set nombre_persona = @nombre_actual
     where id_padron = @id_padron
    set @actualizados = @actualizados + 1
  end
 
  update padron_procesado 
     set nombre_persona_anterior_en_padron = @nombre_anterior,  
         nombre_persona_ahora_en_padron = @nombre_actual 
   where id_padron = @id_padron 
  
  set @procesados = @procesados + 1

  FETCH NEXT FROM X_cursor INTO @id_padron, @sexo, @apellidos, @nombres, @nombre_encontrado
 END
 CLOSE X_cursor
 DEALLOCATE X_cursor
 select @procesados as procesados, @actualizados as actualizados
END 

/*
select * from padron_procesado 
left join padrones on (padrones.id_padron = padron_procesado.id_padron and isnull(padron_procesado.id_padron,0) != 0)
where detalle = '- nombre_persona no comienza con ese apellido' and procesado = 0
and dbo.elimina_acentos(padrones.nombre_persona) like dbo.elimina_acentos(padron_procesado.apellidos) + '%'

select procesado, count(*) from padron_procesado 
group by procesado

select * from padron_procesado 
left join padrones on (padrones.id_padron = padron_procesado.id_padron and isnull(padron_procesado.id_padron,0) != 0)
where procesado = 1  and padron_procesado.id_padron = 26939500
*/


GO

Used By

No items found