У меня есть хранимая процедура для получения идентификатора. Это concat — это фамилия с именем «Stone, Cold» и сравнивается с переданным _fullname, которое, когда я выдаю var_dump
Строка (13) Камень, Холодный
Это должно дать идентификатор
IF NOT ISNULL(_fullname) THEN
SET _fullname = TRIM(_fullname);
SET clause = CONCAT( clause , ' AND CONCAT(c.lname, ', ', c.fname) LIKE CONCAT('%',_fullname,'%')');
END IF;
Когда я пытаюсь сделать тот же запрос в MySQL, он работает отлично, но не работает в процедуре. Я уверен, что проблема в синтаксисе хранимой процедуры.
Пытаться:
DELIMITER //
DROP PROCEDURE IF EXISTS `sp_test`//
CREATE PROCEDURE `sp_test`(IN `_fullname` VARCHAR(20))
BEGIN
DECLARE `clause` VARCHAR(500) DEFAULT '';
IF NOT ISNULL(`_fullname`) THEN
SET `_fullname` := TRIM(`_fullname`);
SET `clause` := CONCAT(`clause`, ' AND CONCAT(`c`.`lname`, '', '', `c`.`fname`) LIKE ''', '%', `_fullname`, '%''');
END IF;
SELECT `clause`;
END//
DELIMITER ;
Других решений пока нет …