Untitled
unknown
plain_text
2 years ago
3.5 kB
12
Indexable
DECLARE @cod_personal INT,
@cod_grupo INT,
@cod_aero INT,
@cod_zona INT,
@cod_estado INT,
@fecha_desde VARCHAR(10),
@fecha_hasta VARCHAR(10),
@es_de_inspecciones INT,
@programada INT,
@nro_viatico INT,
@anio_viatico INT;
-- Asignar valores a los par·metros
SET @cod_personal = -1;
SET @cod_grupo = -1;
SET @cod_aero = -1;
SET @cod_zona = -1;
SET @cod_estado = -1;
SET @fecha_desde = N'01-01-2019';
SET @fecha_hasta = N'30-06-2021';
SET @es_de_inspecciones = -1;
SET @programada = -1;
SET @nro_viatico = -1;
SET @anio_viatico = -1;
-- Crear la tabla de resultados
DECLARE @Resultados TABLE (
cod_solicitud INT,
num_anio VARCHAR(20),
Anio INT,
Numero INT,
Fecha_Salida VARCHAR(10),
ApeyNom VARCHAR(255),
Estado VARCHAR(100),
Fecha_llegada VARCHAR(10),
programada BIT,
monto_total DECIMAL(10,2),
trayecto VARCHAR(100), -- Nuevo campo para el procedimiento PlanMaestro_spViaticos_Consulta_StringTrayecto
monto_anticipo DECIMAL(10,2) -- Nuevo campo para el procedimiento PlanMaestro_spViaticos_Consulta_total_anticipo
);
-- Insertar resultados del primer procedimiento almacenado en la tabla
INSERT INTO @Resultados
(
cod_solicitud,
num_anio,
Anio,
Numero,
Fecha_Salida,
ApeyNom,
Estado,
Fecha_llegada,
programada
)
EXEC PlanMaestro_spViaticos_Consulta_general_por_estado_entre_fechas
@cod_personal, @cod_grupo, @cod_aero, @cod_zona, @cod_estado,
@fecha_desde, @fecha_hasta, @es_de_inspecciones, @programada,
@nro_viatico, @anio_viatico;
-- Declarar variables para almacenar el trayecto y el monto del anticipo
DECLARE @cod_solicitud_temp INT,
@trayecto_temp VARCHAR(100),
@monto_anticipo_temp DECIMAL(10,2);
-- Recorrer cada fila de @Resultados y ejecutar el primer procedimiento almacenado
DECLARE cursorTrayecto CURSOR FOR
SELECT cod_solicitud, trayecto
FROM @Resultados;
OPEN cursorTrayecto;
FETCH NEXT FROM cursorTrayecto INTO @cod_solicitud_temp, @trayecto_temp;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Ejecutar el primer procedimiento almacenado para cada solicitud
EXEC PlanMaestro_spViaticos_Consulta_StringTrayecto
@cod_solicitud = @cod_solicitud_temp,
@es_solicitud = 1,
@trayecto = @trayecto_temp OUTPUT;
-- Actualizar trayecto en @Resultados
UPDATE @Resultados
SET trayecto = @trayecto_temp
WHERE cod_solicitud = @cod_solicitud_temp;
FETCH NEXT FROM cursorTrayecto INTO @cod_solicitud_temp, @trayecto_temp;
END
CLOSE cursorTrayecto;
DEALLOCATE cursorTrayecto;
-- Recorrer cada fila de @Resultados y ejecutar el segundo procedimiento almacenado
DECLARE cursorAnticipo CURSOR FOR
SELECT cod_solicitud, monto_anticipo
FROM @Resultados;
OPEN cursorAnticipo;
FETCH NEXT FROM cursorAnticipo INTO @cod_solicitud_temp, @monto_anticipo_temp;
WHILE @@FETCH_STATUS = 0
BEGIN
-- Ejecutar el segundo procedimiento almacenado para cada solicitud
EXEC PlanMaestro_spViaticos_Consulta_total_anticipo
@cod_solicitud = @cod_solicitud_temp,
@monto_total = @monto_anticipo_temp OUTPUT;
-- Actualizar monto_anticipo en @Resultados
UPDATE @Resultados
SET monto_anticipo = @monto_anticipo_temp
WHERE cod_solicitud = @cod_solicitud_temp;
FETCH NEXT FROM cursorAnticipo INTO @cod_solicitud_temp, @monto_anticipo_temp;
END
CLOSE cursorAnticipo;
DEALLOCATE cursorAnticipo;
-- Devolver los resultados combinados
SELECT *
FROM @Resultados;Editor is loading...
Leave a Comment