SQL Server - Recorrer cadena con un cursor

   
Vista:

Recorrer cadena con un cursor

Publicado por Alejandro (51 intervenciones) el 19/05/2012 03:16:45
Hola que tal estoy con un problema necesito hacer un cursor o bueno es lo que se me ocurre para sacar una validacion que deseo hacer tengo un campo que es una cadena de numeros (folios)
asi: 54379,54380,54383,54381,54377 es dentro de una factura

los folios pueden variar a veces son mas o menos lo que deseo hacer es recorrer ese campo cadena

recorrer folio por folio para hacer una comparacion con otra tabla de un campo, por eso pense que es con un cursor me recorre folio_cadena me saca el primer folio 54379 y yo lo guardo en una @variable y asi poder hacer mi consulta con la otra tabla al terminar mi validacion vuelva a recorrer el Folio_cadena hasta terminar todos los enteros que esten en esa cadena, si alguien tiene una idea se lo agradeceria demasiado.

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias

Recorrer cadena con un cursor

Publicado por Isaias (3186 intervenciones) el 20/05/2012 20:46:33
¿Cursor?, pues no veo donde lo vas a aplicar, mas bien seria un WHILE, quitando de tu cadena el primer numero con un simple SUBSTRING y ponerlo en tu variable, hacer la comparacion o lo que quieras hacer y asi, hasta terminar con tu cadena, ¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Recorrer cadena con un cursor

Publicado por Alejandro (51 intervenciones) el 06/06/2012 00:22:19
listo ya lo hice y si el cursor lo utilizo por recorro una tabla y traerme de los registros un campo y lo hago cadena les dejo lo que hice por si otra persona llega a tener el mismo problema lo resolvi asi:

DECLARE @lstCadena varchar(700), @lstDato varchar(10), @lnuPosComa int
SET @lstCadena = (SELECT strPedido FROM FacturaEnc WHERE intFolio = @cFolioFactura and intsucursal = 41) -- Cadena
SET @strPedido = ''

WHILE LEN(@lstCadena) > 0
BEGIN
SET @lnuPosComa = CHARINDEX(',', @lstCadena) -- Busca el caracter a separador
IF (@lnuPosComa = 0)
BEGIN
SET @lstDato = @lstCadena
SET @lstCadena = ''
END
ELSE
BEGIN
SET @lstDato = SUBSTRING(@lstCadena, 1, @lnuPosComa - 1)
SET @lstCadena = SUBSTRING(@lstCadena, @lnuPosComa + 1, LEN(@lstCadena))
END
-- Busca y concatena de nuevo la cadena con el pedido nuevo
SET @strPedido = (SELECT COALESCE(@strPedido + ',',' ' ) + intFolioSAI FROM PedidoEnc WHERE intPedido = ltrim(rtrim(@lstDato)))
END
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar