как решить mysql хранимую процедуру - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь создать хранимую процедуру в mysql, но выдает ошибку ниже, может ли кто-нибудь сообщить мне, что я делаю неправильно

это ошибка, которую я получаю.

ИСПОЛЬЗОВАТЬ stmt ИСПОЛЬЗОВАНИЕ company_id ,valuator_id, start_limit, endlimit Ошибка в запросе (1064): Синтаксическая ошибка рядом с 'company_id ,valuator_id, start_limit, endlimit' в строке 1 Ошибка в запросе: 3

 DROP PROCEDURE evaluatorEvaluation;

 CREATE PROCEDURE evaluatorEvaluation(
    company_id INT(5),
    evaluator_id INT(5), 
    start_limit INT(3),  
    endlimit INT(5)
)
 PREPARE stmt from 'SELECT frt.agent_id, 
   frt.form_id, 
   frt.company_form_id, 
   frt.badge_assigned_id, 
   CONCAT_WS('', '', mt.lastname, mt.firstname) AS agent, 
   CONCAT_WS('', '', mt1.lastname, mt1.firstname) AS evaluator, 
   cft.form_name, 
   frt.chatter_msg_id, 
   frt.performance_level, 
   frt.achieved_percentage, 
   frt.agent_acceptance, 
   frt.evaluation_date, 
   frt.evaluator_id, 
   frt.exclude, 
   frt.coaching_date, 
   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 = ? AND frt.status IN(1,0) 
 AND frt.evaluator_id = ?
 AND cft.form_type=''internal''
 GROUP BY frt.form_id 
 ORDER BY frt.agent_acceptance DESC, 
     frt.evaluation_date DESC 
 LIMIT ?, ?;
 ';
 EXECUTE stmt USING company_id, evaluator_id, start_limit, endlimit;

1 Ответ

0 голосов
/ 20 февраля 2020

Вы не можете использовать параметры хранимой процедуры напрямую, но можете присвоить значения внутренним переменным:

DROP PROCEDURE evaluatorEvaluation;

 CREATE PROCEDURE evaluatorEvaluation(
    company_id INT(5),
    evaluator_id INT(5), 
    start_limit INT(3),  
    end_limit INT(5)
)
    SET @cid := company_id;
    SET @eid := evaluator_id; 
    SET @slimir := start_limit;  
    SET @elimit := end_limit;

 PREPARE stmt from 'SELECT frt.agent_id, 
   frt.form_id, 
   frt.company_form_id, 
   frt.badge_assigned_id, 
   CONCAT_WS('', '', mt.lastname, mt.firstname) AS agent, 
   CONCAT_WS('', '', mt1.lastname, mt1.firstname) AS evaluator, 
   cft.form_name, 
   frt.chatter_msg_id, 
   frt.performance_level, 
   frt.achieved_percentage, 
   frt.agent_acceptance, 
   frt.evaluation_date, 
   frt.evaluator_id, 
   frt.exclude, 
   frt.coaching_date, 
   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 = ? AND frt.status IN(1,0) 
 AND frt.evaluator_id = ?
 AND cft.form_type=''internal''
 GROUP BY frt.form_id 
 ORDER BY frt.agent_acceptance DESC, 
     frt.evaluation_date DESC 
 LIMIT ?, ?;
 ';
 EXECUTE stmt USING @cid, @eid, @slimit, @elimit; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...