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. Их сложнее кодировать, чем другие языки сценариев, и хранимые процедуры неэффективны для выполнения.