Mysql 传递多个参数时调用语句语法错误
我正在MySQL 5.6.11中运行一个查询。我创建了以下存储过程Mysql 传递多个参数时调用语句语法错误,mysql,database,syntax-error,Mysql,Database,Syntax Error,我正在MySQL 5.6.11中运行一个查询。我创建了以下存储过程 DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `digital_audio_test_detail`(IN temp VARCHAR(50), IN temp2 VARCHAR(50)) BEGIN SET @temp_query = CONCAT('SELECT * FROM ',temp); SET @final_query = CONCA
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `digital_audio_test_detail`(IN temp VARCHAR(50), IN temp2 VARCHAR(50))
BEGIN
SET @temp_query = CONCAT('SELECT * FROM ',temp);
SET @final_query = CONCAT(@temp_query,'WHERE', temp,'.unit_test_result_id =',temp2);
PREPARE stmt FROM @final_query;
EXECUTE stmt;
END
当我在我的查询页面中调用这个过程时,我在它的调用中得到语法错误。这就是我执行查询的方式
SELECT unit_test_result.*, @temp1 := unit_test.name, @temp2 := unit_test_result.id
FROM unit_test_result, unit_test
WHERE unit_test_result.test_run_id = 2
AND unit_test.id = unit_test_result.unit_test_id;
CALL digital_audio_test_detail(@temp1, @temp2);
我必须向程序传递两个参数。当我创建一个只有第一个参数的过程并将其称为一个参数时,它执行得很好。但当我使用两个参数时,我得到了语法错误。我需要帮助。谢谢
SET @final_query = CONCAT(@temp_query,'WHERE', temp,'.unit_test_result_id =',temp2);
您正在生成的字符串不是有效的查询
在WHERE前后添加空格,如中所示
SET @final_query = CONCAT(@temp_query,' WHERE ', temp,'.unit_test_result_id =',temp2);