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
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
Depends On
3Used By
No items found