Внешняя хранимая процедура дает мне название продукта и необходимое для него сырье, а внутренняя хранимая процедура - количество хранимой процедуры на моем складе (например, когда я ищу шоколад (т.е. name_grey) во внешнем хранилище). Процедура Я получаю столбцы с использованием сырья для производства шоколада (то есть) молока и сахара. Теперь я хочу поместить молоко и сахар в качестве входных данных для внутренней хранимой процедуры (где yarnstock1 - моя внутренняя хранимая процедура)
Как мне это сделать?
Я пытался вызвать полную внутреннюю хранимую процедуру во внешней хранимой процедуре. Здесь, когда я даю входной шоколад для внешней хранимой процедуры, я получаю соответствующие детали столбца и детали того всего сырья, которое мне не нужно.
--------------------------------- вся хранимая процедура ----------- ----------
CREATE DEFINER=`root`@`localhost` PROCEDURE `finalgrey`(IN name_grey varchar(250))
BEGIN
SELECT
orderDate,
productname,
warpyarnid,
warpyarn ,
sum(warpneeded * meters_left) as warpneeded ,
weftyarnid,
weftyarn,
sum(weftneeded * meters_left) as weftneeded,
sum(order_quantity), sum(invoice_quantity), sum(meters_left)
FROM
(SELECT
s.orderDate,s.orderToDate,
s.orderid AS saudaid,
c.orderId AS challanid,
pm.productname,
qc.warpyarnid,
pwarp.productname AS warpyarn,
(warperwt / 100) AS warpneeded,
qc.weftyarnid,
pweft.productname AS weftyarn,
(weftwt / 100) AS weftneeded,
(sum(s.totalQuantity)/count(i.invoiceId)) AS order_quantity,
sum(i.totalQuantity) AS invoice_quantity,
IF(((sum(s.totalQuantity)/count(i.invoiceId)) - SUM(i.totalQuantity)) <0, "0", ((sum(s.totalQuantity)/count(i.invoiceId)) - SUM(i.totalQuantity)) ) as meters_left
FROM
sauda AS s
LEFT JOIN
challan c ON s.orderid = c.orderId
LEFT JOIN
invoice AS i ON c.challanid = i.challanid
LEFT JOIN
productmaster pm ON pm.productmasterid = s.itemId
LEFT JOIN
qualitymaster q ON q.productid = pm.productmasterid
LEFT JOIN
qualityconfig qc ON qc.qualityid = q.qualitymasterid and qc.active = 0
LEFT JOIN
productmaster pweft ON pweft.productmasterid = qc.weftyarnid
LEFT JOIN
productmaster pwarp ON pwarp.productmasterid = qc.warpyarnid
WHERE
s.active = 0 AND i.active = 0
AND c.active = 0
AND s.orderDate >= '2018-04-01' and s.orderType = 'Sales' and orderToDate >= CURDATE()
group by s.orderid ) xcx
where productname LIKE CONCAT('%', name_grey , '%')
group by productname;
call yarnstock1('');
END
---------------------------------inner stored procedure-----------------------
CREATE DEFINER=`root`@`localhost` PROCEDURE `yarnstock1`(in warp_yarn varchar(250))
BEGIN
select sum(itna_aayega) , itemId ,productmasterid,productname,sum(itna_bacha)
from
(select s.orderId,s.orderDate,s.orderToDate,s.itemId,py.purchaseyarnid, iys.inwardyarnstockid,
iys.purchaseorderid,(s.totalQuantity),sum(iys.totalkgs) as itna_aaya, pm.productmasterid,pm.productname,
CASE WHEN orderToDate<current_date() THEN "0"
WHEN orderToDate>current_date() AND s.totalQuantity < sum(iys.totalkgs) THEN "0"
ELSE s.totalQuantity - sum(iys.totalkgs) END AS itna_aayega,
if(orderToDate<current_date(),"0", (sum(iys.finalkgs) * 1)) as itna_bacha #group_concat(iys.totalkgs)
from sauda s
LEFT JOIN purchaseyarn py
ON s.orderId = py.purchaseorderid
LEFT JOIN inwardyarnstock iys
on py.purchaseyarnid = iys.purchaseyarnid
left join productmaster pm on s.itemId = pm.productmasterid
where iys.active =0 and s.active =0 and py.active = 0 and s.orderDate >= '2018-04-01' and s.type = 'yarn' and s.orderType = 'purchase'
group by s.orderId) xxx
where productname LIKE CONCAT( warp_yarn, '%')
group by itemId ;
END[]