Как передать строку VARCHAR в хранимую процедуру, где в состоянии? - PullRequest
0 голосов
/ 23 ноября 2018

как передать строку varchar в хранимую процедуру, где в условии?здесь, где в состоянии не работают, как решить эту проблему?

CALL searchStudentByName("%AAP%","'1','2','3'");

MYSQL Хранимые процедуры:

DELIMITER $$

USE `studentsdb`$$

DROP PROCEDURE IF EXISTS `searchStudentByName`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `searchStudentByName`(IN `search_key` VARCHAR(40),IN `student_ids` VARCHAR(350))
BEGIN  
    SELECT students.StudentId,students.StudentName FROM students WHERE students.Status='A' AND students.StudentName LIKE search_key AND students.StudentId NOT IN(student_ids) LIMIT 5;   
END$$

DELIMITER ;

1 Ответ

0 голосов
/ 23 ноября 2018

Вам действительно нужно подготовить оператор, чтобы использовать список таких значений.Попробуйте это:

CREATE DEFINER=`root`@`localhost` PROCEDURE `searchStudentByName`(IN `search_key` VARCHAR(40),IN `student_ids` VARCHAR(350))
BEGIN  
    SET @sql = CONCAT("SELECT students.StudentId,students.StudentName FROM students WHERE students.Status='A' AND students.StudentName LIKE '", search_key, "' AND students.StudentId NOT IN(", student_ids, ") LIMIT 5");
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
END$$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...