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.