Actualmente tengo un Store Procedure en el cual ingreso el parámetro de la tabla para que realice el proceso de uniones de registros sobre esa tabla a su vez trabaja con un cursor para que haga el recorrido en toda la tabla; registro por registro. El SP como tal trabaja sin errores; el SP que realmente hace el trabajo de la unión se llama "sp_UnirPersonas"
Ahora el SP va a unir todos los registros que vea en la tabla; pero quisiera que aparte de sólo unir los registros que figuran en la tabla; también realice una validación previa. Esa validación previa sería comparar la cadena de caracteres (Paterno-Materno-Nombre) del IdPrincipal y IdSecundario respectivamente si las cadenas realmente coinciden que efectue entonces el SP "sp_UnirPersonas" con seguridad para la unión respectiva caso contrario que aborte el proceso y ya no continue. Esto lo digo porque no tengo la certeza de que mi tabla entre sus 50 000 registros por ahi quizas no se filtró correctamente un registro y quizas el IdPrincipal e IdSecundario no corresponden a la misma personapor tanto si detecta eso que dé por terminado el proceso de unión ya que por el contrario si no pongo esa validación ... el SP de igual forma realizaría la unión ya que sólo toma los Id's respectivamente de la Tabla y continua el proceso.
Adjunto el query que estoy utilizando; las partes comentadas son las que he adicionado para el tema de comparación de cadenas; por lo demas el query trabaja OK.
Código SQL:
Ver originalALTER PROCEDURE [dbo].[ProcesarDupli]
AS
DECLARE @sPaterno VARCHAR(40),
@sMaterno VARCHAR(40),
@sNombre VARCHAR(40),
@sSexo CHAR(1),
@dFechaNacimiento datetime,
@sIdPaisNacionalidad CHAR(3),
@IdPrincipal uniqueidentifier,
@IdSecundario uniqueidentifier,
@cnt INT
BEGIN
DECLARE @nIdOperador INT,
@nIdSesion INT
SET @nIdOperador = 1
SET @nIdSesion = 1
DECLARE registrosduplicados cursor LOCAL static FOR
SELECT * FROM DOBLE
OPEN registrosduplicados
Fetch NEXT FROM registrosduplicados
INTO @sPaterno, @sMaterno, @sNombre, @sSexo,
@dFechaNacimiento, @sIdPaisNacionalidad, @IdPrincipal, @IdSecundario
While @@fetch_status=0
BEGIN
-- CAMBIO COMPROBACION IF
-- CAMBIO COMPROBACION (
-- CAMBIO COMPROBACION (SELECT spaterno + ' ' + smaterno + ' ' + snombre + ' ' FROM DOBLE WHERE IdPrincipal=@IdPrincipal) =
-- CAMBIO COMPROBACION (SELECT spaterno + ' ' + smaterno + ' ' + snombre + ' ' FROM DOBLE WHERE IdSecundario=@IdSecundario)
EXEC sp_UnirPersonas @IdPrincipal, @IdSecundario, @nIdOperador, @nIdSesion -- Este SP realmente realiza el proceso de Unión.
SET rowcount 0
Fetch NEXT FROM registrosduplicados
INTO @sPaterno, @sMaterno, @sNombre, @sSexo,
@dFechaNacimiento, @sIdPaisNacionalidad, @IdPrincipal, @IdSecundario
-- CAMBIO COMPROBACION )
-- CAMBIO COMPROBACION ELSE
-- CAMBIO COMPROBACION END
END
Close registrosduplicados
Deallocate registrosduplicados
print 'EJECUCIÓN SATISFACTORIA'
END
[/CODE]
Saludos,