[英]mysql function parameter not work in where condition of select statement
DELIMITER $$
CREATE DEFINER=`axistms`@`localhost` FUNCTION `CheckDoc`(`orderId` INT) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE lvl int;
SELECT count(`id`) INTO lvl FROM `com_carrier_portal_upload_documents` WHERE `orderID`= orderId;
RETURN lvl;
END$$
DELIMITER ;
any order id pass through orderId parameter its doesn't effect on where condition.任何通过 orderId 参数传递的订单 ID 都不会影响 where 条件。 Always return count of all records.How to fix this?
总是返回所有记录的计数。如何解决这个问题?
I'd suggest you to rename stored procedure argument, do something like this -我建议你重命名存储过程参数,做这样的事情 -
CREATE DEFINER = `axistms`@`localhost` FUNCTION `CheckDoc` (orderIdParam int)
RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE lvl int;
SELECT
COUNT(`id`) INTO lvl
FROM `com_carrier_portal_upload_documents`
WHERE `orderID` = orderIdParam;
RETURN lvl;
END
...because WHERE orderID
= orderId can be equal to WHERE true. ...因为 WHERE
orderID
= orderId 可以等于 WHERE true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.