Как добавить параметры Dynami c в хранимую процедуру mysql - PullRequest
0 голосов
/ 24 февраля 2020

Я работаю над 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...