MySQL Хранимая процедура с несколькими операторами SELECT FROM из одной таблицы - PullRequest
1 голос
/ 06 мая 2020

У меня есть таблица под названием «thumb» с относительными путями к изображениям и другими данными, связанными с изображениями, такими как их названия и описания. Каждая страница веб-сайта, над которым я работаю, представляет разные категории изображений. На данный момент у меня есть отдельные хранимые процедуры для каждой страницы (категории), чтобы выбрать разные изображения в соответствии с их идентификаторами. Возможно ли иметь одну хранимую процедуру для каждой страницы (категории), которая выбирала бы разные изображения, или мне нужно создавать отдельные хранимые процедуры для каждого диапазона изображений?

Теперь это примерно так: Процедура для ' Страница «Все работы»:

BEGIN
SELECT * FROM thumb ORDER BY id ASC;
END

Порядок действий для «Живописей»:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 12 AND 15 ORDER BY id ASC;
END

Порядок «Рисунков»:

BEGIN
SELECT * FROM thumb WHERE id BETWEEN 16 AND 19 ORDER BY id ASC;
END

Et c.

Может ли хранимая процедура прослушивать, откуда исходит вызов, и через операторы if решить, какой оператор SELECT * FROM применить?

1 Ответ

1 голос
/ 06 мая 2020

Вам нужно что-то вроде

CREATE PROCEDURE get_images (IN pagetype TEXT)
SELECT * 
FROM thumb 
WHERE CASE pagetype WHEN 'Paintings' THEN id BETWEEN 12 AND 15
                    WHEN 'Drawings'  THEN id BETWEEN 16 AND 19 
                                     ELSE TRUE
                                     END
ORDER BY id ASC;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...