В настоящее время я пишу хранимую процедуру, которая использует операторы case для определения запросов. Внутри одного из моих запросов есть выражение case, и каждый раз, когда я пытаюсь сохранить измененную процедуру, я получаю синтаксическую ошибку. Эта процедура сохранит штраф без выражения этого случая, но сработает после ее добавления. Я знаю, что синтаксис самого выражения является точным, поэтому мне интересно, разрешены ли выражения case внутри оператора case.MySQL - Сохраненная процедура - использование выражения выражения внутри случая?
Пример:
CASE
WHEN x = 1 THEN
SELECT
5 AS 'Col1',
CASE
WHEN y = 5 THEN 2
ELSE 0
END AS 'Col2'
FROM table
WHERE 1=1
;
WHEN x = 2 THEN
SELECT
*
FROM table2
;
ELSE
SELECT
*
FROM table3
;
END CASE;
Любая помощь будет высоко оценили. Возможно ли иметь выражение case внутри аргумента case? Если да, то форматируется ли оно иначе? Как я могу заставить это работать ...?
Спасибо!
Вы можете вложить аргументы case столько, сколько хотите, но серьезно подумайте о ПРОТИВ этого, потому что это в значительной степени определение логики спагетти. –
Независимо от того, что вы пытаетесь сделать, это может оказаться там как плохой прецедент для вашей системы. – Drew
Мы автоматизируем определенный отчет. В зависимости от формы шаблона в процедуре используется другой выбор запроса. Что-то не так с синтаксисом? Если разрешено помещать выражения внутри операторов, почему бы сказать, что у меня синтаксическая ошибка? – WoofDg79