Este es un ejemplo de un procedimiento que regresa un dataset con los movimientos de una cuenta, mostrando el saldo en cada registro.
CREATE PROCEDURE EDO_CTA(DESDE DATE)
RETURNS(
FECHA DATE,
CONCEPTO VARCHAR(50),
ENTRADA DECIMAL(15, 2),
SALIDA DECIMAL(15, 2)
SALDO DECIMAL(15, 2)
)
AS
BEGIN
--Obtenemos el saldo inicial
EXECUTE PROCEDURE GET_SALDO_INICIAL(:DESDE)
RETURNING_VALUES :SALDO;
FOR SELECT
FECHA, CONCEPTO, ENTRADA, SALIDA
FROM
MOVIMIENTOS_CUENTA
WHERE
FECHA > :DESDE
INTO
:FECHA, :CONCEPTO, :ENTRADA, :SALIDA
DO BEGIN
SALDO = SALDO + ENTRADA - SALIDA;
SUSPEND;
END
END;
Esto ira calculando el saldo por cada registro.
Justito lo que estaba buscando.. pero.. como seria la store procedure de get_saldo_inicial? tengo dudas en la sintaxis, no estoy muy ducho.
ResponderBorrarMuchas gracias, Juan
El código mostrado es solo un ejemplo para mostrar el punto, un procedimiento real tendría que tomar en cuantas muchas otras cosas (como el numero de cuenta por ejemplo).
ResponderBorrarEn el caso del procedimiento GET_SALDO_INICIAL pudiera realizarse haciendo un query a una tabla de saldos al día o como una suma de entradas menos las salidas, es decir hay varias posibilidades. La sintaxis seria similar al procedimiento EDO_CTA del ejemplo.