Объясните хранимую процедуру, описанную ниже - PullRequest
0 голосов
/ 04 июля 2018
CREATE DEFINER=`root`@`localhost` PROCEDURE `get_plan_images`(
    _list varchar(2000)
)
BEGIN
   SET @LIST=_list;
   set @sql = concat('SELECT plan_id, plan_image 
                        FROM ibuild.plan_images 
                       where plan_id in (', @LIST , ')');
   PREPARE q FROM @sql;
   execute q;
END

Что concat делает здесь? И что означает это утверждение PREPARE q FROM @sql;

1 Ответ

0 голосов
/ 04 июля 2018

CONCAT просто объединяет два или более фрагментов текста вместе. В приведенном выше примере @LIST содержит список идентификаторов, переданных в процедуру. После CONCAT @sql становится строкой, которая содержит что-то вроде: SELECT plan_id, plan_image FROM ibuild.plan_images where plan_id in (1,2,3)

См. Здесь: Функция MySQL CONCAT

Оператор PREPARE просто дает оператору имя, чтобы вы могли его выполнить. Смотрите здесь: MySQL ПОДГОТОВКА

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...