Hola.
Además de lo que bién te señaló
birmain, noto que en la declaración de variables estas utilizando
TYPE OF FLOAT, como si
FLOAT se tratase de un dominio. Y también pareciera que están sobrando algunos ':'.
Intentá de este modo:
Código SQL
[-]
SET TERM ^ ;
CREATE PROCEDURE PROC_TMP(V_ID_TIPO INT NOT NULL, V_ID_GRUPO INT NOT NULL,
V_ID_PRODUCTO INT NOT NULL, V_ID_BODEGA INT NOT NULL)
RETURNS (EXISTENCIA FLOAT NOT NULL)
AS
DECLARE ENTRADAS FLOAT;
DECLARE SALIDAS FLOAT;
BEGIN
SELECT SUM(D.CANTIDAD)
FROM FER_DETALLE_MOVIMIENTO D INNER JOIN FER_TIPO_MOVIMIENTO T ON D.ID_TIPO_MOVIMIENTO = T.ID_TIPO_MOVIMIENTO
WHERE D.ID_TIPO = :V_ID_TIPO
AND D.ID_GRUPO = :V_ID_GRUPO
AND D.ID_PRODUCTO = :V_ID_PRODUCTO
AND D.ID_BODEGA = :V_ID_BODEGA
AND T.SIGNO = '+' into :ENTRADAS;
IF(ENTRADAS = NULL) THEN
ENTRADAS = 0;
SELECT SUM(D.CANTIDAD)
FROM FER_DETALLE_MOVIMIENTO D INNER JOIN FER_TIPO_MOVIMIENTO T ON D.ID_TIPO_MOVIMIENTO = T.ID_TIPO_MOVIMIENTO
WHERE D.ID_TIPO = :V_ID_TIPO
AND D.ID_GRUPO = :V_ID_GRUPO
AND D.ID_PRODUCTO = :V_ID_PRODUCTO
AND D.ID_BODEGA = :V_ID_BODEGA
AND T.SIGNO = '-' into :SALIDAS;
IF (SALIDAS = NULL) THEN
SALIDAS = 0;
EXISTENCIA = ENTRADAS - SALIDAS;
SUSPEND;
END^
SET TERM ; ^
Saludos.