Mysql 如何将varchar字符串传递到条件为的存储过程?
如何将varchar字符串传递到条件为的存储过程? 这里,哪里在条件不好的情况下如何解决这个问题Mysql 如何将varchar字符串传递到条件为的存储过程?,mysql,stored-procedures,Mysql,Stored Procedures,如何将varchar字符串传递到条件为的存储过程? 这里,哪里在条件不好的情况下如何解决这个问题 CALL searchStudentByName("%AAP%","'1','2','3'"); MYSQL存储过程: DELIMITER $$ USE `studentsdb`$$ DROP PROCEDURE IF EXISTS `searchStudentByName`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `searchStude
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 ;
您确实需要准备一个语句来使用这样的值列表。试试这个:
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$$
你的意思是什么?如果这回答了你的问题,请考虑把答案标记为(在下/下投票的复选标记旁边的答案)。看你失踪的样子。编辑后(设置@sql=CONCAT(“从学生所在的位置选择students.StudentId,StudentName,StudentName,students.Status='A'和students.StudentName LIKE',search_key''和students.StudentId不在(“,student_id,”)限制5”);)这项工作correct@VIJAY我回头看了看,你的编辑被其他评论员拒绝了(我不认为他们看到了更改,因为它在屏幕右侧关闭了),但我已经自己修复了代码。感谢您指出错误。