Параметр функции mysql не работает, где условие оператора выбора - PullRequest
0 голосов
/ 04 сентября 2018
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, не влияет на условие где. Всегда возвращать количество всех записей. Как это исправить?

1 Ответ

0 голосов
/ 04 сентября 2018

Я бы предложил переименовать аргумент хранимой процедуры, сделать что-то вроде этого -

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...