繁体   English   中英

mysql函数参数在select语句的where条件下不起作用

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM