Временная процедура определяет переменную проблему - PullRequest
0 голосов
/ 22 апреля 2020

Я пробую MySQL процедуры в первый раз, однако я не могу понять, как определить переменную @index_ids для моей жизни. Это действительно не нравится SET.

CREATE PROCEDURE #indextemp
BEGIN
  SET @index_ids = (SELECT DISTINCT index_id FROM visibility_index_processing_queue WHERE process_id IS NOT NULL);
  SELECT @index_ids;
END

1 Ответ

0 голосов
/ 22 апреля 2020

Проблема в синтаксисе CREATE PROCEDURE, а не в установочной переменной. Вам просто нужно добавить скобки после имени процедуры. Вот рабочий пример

delimiter $
CREATE PROCEDURE indextemp()
BEGIN
  SET @index_ids = (SELECT DISTINCT index_id FROM visibility_index_processing_queue WHERE process_id IS NOT NULL);
  SELECT @index_ids;
END$
delimiter ;

Иногда использование символа разделителя в теле процедуры также может вызвать проблемы. Вот почему я устанавливаю разделитель на $ перед созданием процедуры и возвращаю его по умолчанию ; после того, как я закончу.

Также обратите внимание, что я удалил # из названия вашей процедуры. В sql # используется для вставки комментариев. Если по какой-то причине вы действительно хотите использовать его от своего имени, вы должны сделать это следующим образом

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