Mysql выбрать несколько строк в переменную

В функции mysql я хотел бы сохранить результаты в переменную, например список идентификаторов, затем я хочу вызвать другую функцию, передавая каждый идентификатор.

set @IDs = (select id FROM SCHOOL where zipcode = 12345);
loop thru @IDs
 call anotherfunction(id)

Как я знаю, я не могу сохранить список строк в качестве переменной в MySQL. Что было бы лучшим решением для моей проблемы?

1 ответ

Определяемая пользователем переменная или локальная переменная в хранимой подпрограмме может иметь только одно значение за раз, а не список значений.

Большинство людей пишут сценарии на своем любимом языке (например, Python, Ruby, PHP, Perl) для выполнения цикла. Они запускают свой запрос и делают цикл для получения результатов, по одной строке за раз, затем вызывают anotherfunction() на идентификатор из каждой строки.

Вы также можете сделать что-то подобное с CURSOR в хранимой подпрограмме. См. https://dev.mysql.com/doc/refman/8.0/en/cursors.html для примеров и документации.

Я не сторонник использования хранимых процедур в MySQL. Их сложнее кодировать, чем другие языки сценариев, и хранимые процедуры неэффективны для выполнения.

Другие вопросы по тегам