Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/04/2014, 10:18
cesarin2
 
Fecha de Ingreso: agosto-2005
Mensajes: 80
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Comparación de Cadena de Caracteres dentro de SP

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 original
  1. ALTER PROCEDURE [dbo].[ProcesarDupli]  
  2. AS     
  3.         DECLARE @sPaterno VARCHAR(40),
  4.         @sMaterno VARCHAR(40),
  5.         @sNombre VARCHAR(40),
  6.         @sSexo CHAR(1),
  7.         @dFechaNacimiento datetime,
  8.         @sIdPaisNacionalidad CHAR(3),
  9.         @IdPrincipal uniqueidentifier,
  10.         @IdSecundario uniqueidentifier,
  11.         @cnt INT
  12.                
  13.             BEGIN
  14.                 DECLARE @nIdOperador INT,
  15.                 @nIdSesion INT
  16.  
  17.                 SET @nIdOperador = 1
  18.                 SET @nIdSesion  = 1
  19.  
  20.  
  21.                 DECLARE registrosduplicados cursor LOCAL static FOR
  22.                 SELECT * FROM DOBLE
  23.  
  24.                 OPEN registrosduplicados
  25.  
  26.                 Fetch NEXT FROM registrosduplicados
  27.                 INTO @sPaterno, @sMaterno, @sNombre, @sSexo,
  28.                 @dFechaNacimiento, @sIdPaisNacionalidad, @IdPrincipal, @IdSecundario
  29.            
  30.  
  31.                 While @@fetch_status=0
  32.                     BEGIN
  33. -- CAMBIO COMPROBACION      IF  
  34. -- CAMBIO COMPROBACION          (  
  35. -- CAMBIO COMPROBACION          (SELECT spaterno + ' ' + smaterno + ' ' + snombre + ' ' FROM DOBLE WHERE IdPrincipal=@IdPrincipal) =
  36. -- CAMBIO COMPROBACION          (SELECT spaterno + ' ' + smaterno + ' ' + snombre + ' ' FROM DOBLE WHERE IdSecundario=@IdSecundario)
  37.                         EXEC sp_UnirPersonas @IdPrincipal, @IdSecundario, @nIdOperador, @nIdSesion -- Este SP realmente realiza el proceso de Unión.
  38.  
  39.                         SET rowcount 0
  40.  
  41.                         Fetch NEXT FROM registrosduplicados
  42.                         INTO @sPaterno, @sMaterno, @sNombre, @sSexo,
  43.                         @dFechaNacimiento, @sIdPaisNacionalidad, @IdPrincipal, @IdSecundario
  44. -- CAMBIO COMPROBACION          )              
  45. -- CAMBIO COMPROBACION      ELSE       
  46. -- CAMBIO COMPROBACION       END
  47.                     END
  48.  
  49.                 Close registrosduplicados
  50.                 Deallocate registrosduplicados
  51.  
  52.                 print 'EJECUCIÓN SATISFACTORIA'
  53.             END
[/CODE]

Saludos,

Última edición por gnzsoloyo; 02/04/2014 a las 10:20 Razón: Usar Highlight "SQL", por favor.