Entradas

Mostrando las entradas de julio, 2007

Firebird Stored Procedures

Trabajando con los procedimientos almacenados de firebird. Algo interesante es la posibilidad de tener columnas con acumulados en los procedimientos, algo que no es facil de lograr con MS SQL Server (a menos que se usen tablas temporables o variables de tipo tabla). Y la posibilidad de ejecutar procedimientos por cada registro. 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