entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Guardar resultado de consulta SQL en una variable por cada registro

Hola a todos

Quisiera saber si es posible que por cada registro que me arroje una consulta SQL se pueda guardar en una variable dentro del mismo sql server. Estoy haciendo un STORED PROCEDURE, pero necesito guardar ese valor que me arroja para usarlo posteriormente como variable para otra consulta. ojala alguien me pueda ayudar, de antemano muchas gracias por cualquier aportación. Saludos

select [campo1]  FROM [test].[dbo].[Master] group by [campo1]

el resultado de esta consulta me arroja 3 rows. quiero una variable por cada row

1 Respuesta

1voto

london_mex Puntos220

Esto si es factible, pero solo a través de un cursor, te dejo un ejemplo muy sencillo

    SET NOCOUNT ON

    -- drop table #TablaTemporal
    -- Genera Tabla temporal de Dias.
    CREATE TABLE #TablaTemporal (ID int, UnirRegistros VARCHAR(8000))
    INSERT INTO #TablaTemporal (ID, UnirRegistros) VALUES(1, '')

    DECLARE @MyResultados AS VARCHAR(8000), @MyDatosPrevios AS VARCHAR(8000)
    DECLARE MyCursorResultado CURSOR FOR

    SELECT ('Hora : ' + MyEventosSubsecuentes.MyEventoSubsecuenteHora + '; ' + 
            'Motivo : ' + MyMotivos.MyMotivoNombre + '; ' + 
            'Tipo Falla : ' + MyTiposFallas.MyTipoFallaNombre + '; ' + 
            'Solución : ' + MySoluciones.MySolucionNombre + '; ' + 
            'Observaciones : ' + RTRIM(LTRIM(MyEventosSubsecuentes.MyEventoSubsecuenteObservaciones)) + '; ' + 
            'Fecha Seguimiento : ' + CONVERT(VARCHAR(20), MyEventosSubsecuentes.MyEventoSubsecuenteFechaAlta, 100) + '; ' + 
            'Usuario Seguimiento ' + Usuarios.UsuarioNombre + '; ' + 
            'Estatus : ' + MyEstadosSubsecuentes.MyEstadoSubsecuenteNombre
           ) AS Seguimientos
    FROM MyEventosSubsecuentes
    INNER JOIN MyMotivos ON MyEventosSubsecuentes.MyMotivoID = MyMotivos.MyMotivoID
    INNER JOIN MyTiposFallas ON MyEventosSubsecuentes.MyTipoFallaID = MyTiposFallas.MyTipoFallaID
    INNER JOIN MySoluciones ON MyEventosSubsecuentes.MySolucionID = MySoluciones.MySolucionID
    INNER JOIN Usuarios ON MyEventosSubsecuentes.UsuarioRFC = Usuarios.UsuarioRFC
    INNER JOIN MyEstadosSubsecuentes ON MyEstadosSubsecuentes.MyEstadoSubsecuenteID = MyEventosSubsecuentes.MyEstadoSubsecuenteID
    WHERE MyEventosSubsecuentes.MyRegistraEventoID = 2 
    FOR XML PATH

    OPEN MyCursorResultado

    FETCH NEXT FROM MyCursorResultado
    INTO @MyResultados

    WHILE @@FETCH_STATUS = 0
    BEGIN
       SET @MyDatosPrevios =    @MyResultados

       UPDATE #TablaTemporal SET UnirRegistros = UnirRegistros + CHAR(13) + @MyResultados WHERE ID = 1

       PRINT REPLICATE('*****', 20)
       PRINT @MyDatosPrevios
       PRINT REPLICATE('*****', 20)

       FETCH NEXT FROM MyCursorResultado
       INTO  @MyResultados
    END
    CLOSE MyCursorResultado
    DEALLOCATE MyCursorResultado

    select @MyDatosPrevios 

    --  '  RESULTADO FINAL '
    SELECT * FROM #TablaTemporal

    DROP TABLE #TablaTemporal

Y en la siguiente liga te lo explican a detalle

Explicación

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta