我有一个MySQL函数,可以检索每个客户的库存.该函数运行得很好,但最近我需要向函数添加第三个参数.
My current working function:
CREATE FUNCTION getStock (productId INT, customerId INT) RETURNS INT(11)
BEGIN
DECLARE qty INT(11) DEFAULT 0;
IF (customerId = 0)
THEN
SELECT (......) INTO qty
WHERE product_id = productId;
ELSE
SELECT (...) INTO QTY
WHERE product_id = productId AND customer_id = customerId;
ENDIF;
RETURN qty;
END;
问题是,现在我需要重构该查询并使用三个参数.我想申请一个更好的条件,比如:
CREATE FUNCTION getStock (productId INT, forceCustomerId INT, ignoreCustomerId INT) RETURNS INT(11)
BEGIN
DECLARE qty INT(11) DEFAULT 0;
DECLARE query VARCHAR(255);
// Something like this
SET query = SELECT (...) INTO qty
WHERE product_id = productId;
IF (forceCustomerId IS NOT NULL and forceCustomerId != 0)
SET query &= AND customer_id = forceCustomerId;
IF (ignoreCustomerId IS NOT NULL and ignoreCustomerId != 0)
SET query &= AND customer_id != ignoreCustomerId;
RETURN qty;
END;
我怎么才能做到这样的事情呢?