Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将varchar字符串传递到条件为的存储过程?_Mysql_Stored Procedures - Fatal编程技术网

Mysql 如何将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

如何将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 ;

您确实需要准备一个语句来使用这样的值列表。试试这个:

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我回头看了看,你的编辑被其他评论员拒绝了(我不认为他们看到了更改,因为它在屏幕右侧关闭了),但我已经自己修复了代码。感谢您指出错误。