Процедура хранения MySQL не может добавлять значения - PullRequest
0 голосов
/ 21 января 2019
DELIMITER $$

CREATE PROCEDURE GetCustomerLevel(p_barcode int)

BEGIN

DECLARE q1 int;

DECLARE q2 int;

DECLARE q3 int;

DECLARE total int;

SET total :=0;

SELECT sum(adjustment_quantity) INTO q1 FROM adjustment_inventory WHERE item_barcode = p_barcode group by adjustment_quantity;

SELECT sum(opening_stock) INTO q2 FROM openingstock
WHERE item_barcode = p_barcode group by opening_stock;

SELECT sum(inwardquantity) INTO q3
 FROM inwardmaster WHERE item_barcode = p_barcode group by inwardquantity;

    IF q1 IS NULL THEN

    SET q1 := 0;

    END IF;

    IF q2 IS NULL THEN

    SET q2 := 0;

    END IF;

    IF q3 IS NULL THEN

 SET q3 := 0;

    END IF;

    SELECT q1;
    SELECT q2;
    SELECT q3;
    SELECT q1+q2+q3;
    END$$

Это неверный ответ каждый раз.Например, q1 = 100, q2 = 200, q3 = 100, его возвращение 100

.

1 Ответ

0 голосов
/ 21 января 2019

вам не нужно использовать хранимую процедуру для этого

set @barcode = '1234';

select 
    coalesce((
      SELECT sum(coalesce(adjustment_quantity,0)) 
      FROM adjustment_inventory 
      WHERE item_barcode = @p_barcode
    ),0) + 
    coalesce((
      SELECT sum(opening_stock) 
      FROM openingstock
      WHERE item_barcode = @p_barcode
    ), 0) + 
    coalesce((
      SELECT 
      sum(coalesce(inwardquantity,0))
      FROM inwardmaster WHERE item_barcode = @p_barcode
    ), 0) res
From Dual
;

Если вы действительно хотите использовать процедуру, проверьте код ниже

DELIMITER $$
CREATE PROCEDURE GetCustomerLevel(p_barcode int)
BEGIN
  DECLARE q1 int;
  DECLARE q2 int;
  DECLARE q3 int;
  DECLARE total int;
SET total :=0;
  SELECT coalesce(sum(adjustment_quantity), 0) INTO q1 FROM adjustment_inventory WHERE item_barcode = p_barcode;
  SELECT coalesce(sum(opening_stock), 0) INTO q2 FROM openingstockWHERE item_barcode = p_barcode;
  SELECT coalesce(sum(inwardquantity), 0) INTO q3 FROM inwardmaster WHERE item_barcode = p_barcode;

  SELECT q1;
  SELECT q2;
  SELECT q3;

  set total = q1+q2+q3;

  SELECT total;
END$$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...