简体   繁体   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 ;

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.

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