我目前正在编写一个使用case语句来确定要运行的查询的存储过程。我的一个查询内部是一个case表达式,每次我尝试保存更改过程时都会出现语法错误。如果没有case表达式,该过程将保存正常,但一旦添加就失败。我知道表达式本身的语法是准确的,所以我想知道在case语句中是否允许使用case表达式。
示例:
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表达式?如果是这样,它的格式是否不同?我怎样才能让它发挥作用......?
谢谢!
答案 0 :(得分:0)
根据MySQL docs,支持嵌套CASE
语句,我在test_proc
中尝试了您的代码并且它有效,我改变的唯一内容是table
到{ {1}}因为table1
是
table
答案 1 :(得分:0)
这是我的分隔符。如果我将一般过程的分隔符更改为除分号以外的其他内容并将其更改回最终一切正常。