[英]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 ;
任何通过 orderId 参数传递的订单 ID 都不会影响 where 条件。 总是返回所有记录的计数。如何解决这个问题?
我建议你重命名存储过程参数,做这样的事情 -
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
...因为 WHERE orderID
= orderId 可以等于 WHERE true。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.