MYSql存储过程调试查询
当我尝试在phpmyadmin上运行mysql存储过程代码时,就会产生错误。 错误是:concatstrWhere'附近的语法错误,以及'IN'中的qxt.topic_id, 谢谢MYSql存储过程调试查询,mysql,stored-procedures,Mysql,Stored Procedures,当我尝试在phpmyadmin上运行mysql存储过程代码时,就会产生错误。 错误是:concatstrWhere'附近的语法错误,以及'IN'中的qxt.topic_id, 谢谢 您在哪里设置strWhere?是的。谢谢您的快速回复。我声明strWhere VARCHAR1024;但其他一些地方也会产生bug。主要是IF和IN以及ans.user_id IN',userId[X],;请帮帮我。 DELIMITER $$ DROP PROCEDURE IF EXISTS PercentageCa
您在哪里设置strWhere?是的。谢谢您的快速回复。我声明strWhere VARCHAR1024;但其他一些地方也会产生bug。主要是IF和IN以及ans.user_id IN',userId[X],;请帮帮我。
DELIMITER $$
DROP PROCEDURE IF EXISTS PercentageCalc$$
CREATE PROCEDURE PercentageCalc(topicArray VARCHAR(255),topicIndId int(11),userId VARCHAR(255),userArraySize int(11))
BEGIN
DECLARE x INT;
SET x = 0;
SELECT topicArray;
SELECT topicIndId;
SET @sql = CONCAT('SELECT COUNT(*) AS total FROM answer as ans
INNER JOIN question AS qst ON ans.question_id = qst.question_id
INNER JOIN question_topic AS qxt ON qxt.question_id = qst.question_id
WHERE (ans.answer_correct_flag = \'yes\')
AND (qxt.topic_id IN (\',topicArray,\'))',strwhere);
IF (topicIndId NOT NULL) THEN
SET strWhere = concat(strWhere, ' AND (qxt.topic_id IN (',topicIndId,'))');
END IF;
IF (userId NOT NULL) THEN
REPEAT
SET strWhere = concat(strWhere, ' AND (ans.user_id IN (',userId[X],'))');
SET x = x + 1;
UNTIL x > userArraySize
END REPEAT
END IF;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END$$
DELIMITER ;
CALL PercentageCalc('1,2,3','1,2','1','1');