Te escribo algo de codigo para que veas como es.
Este ejemplo
El procedimiento spSuma, recibe un parametro llamado Filtro
y retorna los datos Dato1, Dato2 (Son campos de la tabla) y Dato3, que es un campo que se calcula en base a Dato1+Dato2.
Código SQL
[-]
create procedure spSUMA (
--Declaracion de parametros enviados
--al procediemto almacenado
Filtro integer, ...)
returns (
--Declaracion de variables de retorno
--del procedimiento
Dato1 integer,
Dato2 integer,
Dato3 Integer;
)
as
--Area de Declaracion de Variables locales...
declare variable Valor integer;
declare variable Letra char(1);
declare variable String varchar(100);
BEGIN
FOR SELECT CAMPO1, CAMPO2
FROM TABLA
WHERE (CAMPO1>: Filtro)
ORDER BY CAMPO2
INTO : Dato1, : Dato2;
DO
BEGIN
IF (NOT Dato1 IS NULL) THEN
Dato1=0;
IF (NOT Dato2 IS NULL) THEN
Dato2=2;
Dato3=Dato1 + Dato2;
IF (Dato3>100) THEN
BEGIN
SELECT DATO3 FROM OTRA_SUMA
WHERE (Condicion...)
INTO ato3;
END
--Envia las variables de salida
SUSPEND;
END
END
Algo asi deberia ser, inclui algunas condiciones de validacion etc...
Espero te sirva...