davidss79
01-02-2013, 23:58:11
Llevo ya bastante rato que no programo en interbase, pero agarre un proyecto y como era pequeño decidí utilizar firebird,
en mi procedimiento solo necesito traer de la tabla de movimientos las entradas y las salidas, restarlas y sacar la existencia de un producto, mi procedimiento esta asi:
CREATE PROCEDURE EXISTENCIA_BODEGA
(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 TYPE OF FLOAT;
DECLARE SALIDAS TYPE OF FLOAT;
BEGIN
/* Procedure body */
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;
y me sale ese error al querer compilarlo.
Saludos y gracias por su ayuda.
en mi procedimiento solo necesito traer de la tabla de movimientos las entradas y las salidas, restarlas y sacar la existencia de un producto, mi procedimiento esta asi:
CREATE PROCEDURE EXISTENCIA_BODEGA
(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 TYPE OF FLOAT;
DECLARE SALIDAS TYPE OF FLOAT;
BEGIN
/* Procedure body */
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;
y me sale ese error al querer compilarlo.
Saludos y gracias por su ayuda.