Я работаю над MySQL процедурой. Я получаю результат правильно, но когда мне нужно добавить динамические c параметры if-else, это не дает мне результат.
DELIMITER //
DROP PROCEDURE IF EXISTS getEval;
Create procedure getEval(c_id INT(5), e_id INT(5), rec_offset INT(10), rec_limit INT(10),whr
VARCHAR(256))
BEGIN
SET @company_id = c_id;
SET @evaluator_id = e_id;
SET @record_offset = rec_offset;
SET @record_limit = rec_limit;
SET @whr=whr;
SET @sql = CONCAT('SELECT frt.agent_id,
frt.form_id,
frt.searchable
FROM form_results_tbl frt
INNER JOIN company_form_tbl cft
LEFT JOIN members_tbl mt ON frt.agent_id = mt.user_id
LEFT JOIN members_tbl mt1 ON frt.evaluator_id = mt1.user_id
WHERE frt.company_form_id = cft.company_form_id
AND frt.company_id = @company_id AND frt.status IN(1,0)
AND frt.evaluator_id = @evaluator_id
AND cft.form_type="internal" ',@whr,'
GROUP BY frt.form_id
ORDER BY frt.agent_acceptance DESC,
frt.evaluation_date DESC LIMIT @record_offset, @record_limit');
Prepare stmt FROM @sql;
EXECUTE stmt USING @company_id , @evaluator_id, @record_offset , @record_limit;
DEALLOCATE PREPARE stmt;
END //
Это некоторые дополнительный пункт where я пытаюсь добавить в хранимую процедуру
if( $supervisor != NULL ){
$whr .= " AND mt.supervisor = '".$supervisor."'";
}
if( $form_name != NULL ){
$whr .= " AND cft.company_form_id = '".$form_name."'";
}
if( $form_filter != NULL ){
$whr .= " AND cft.company_form_id = '".$form_filter."'";
}
if( $form_number != NULL ){
$whr .= " AND (frt.form_id = '".$form_number."' OR frt.searchable = '".$form_number."')";
Call getEvalNew(4,393,0,30,$whr);