MySQL - 存储过程 - 在Case语句中使用Case表达式?

时间:2016-08-16 15:47:00

标签: mysql stored-procedures case-statement case-expression

我目前正在编写一个使用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表达式?如果是这样,它的格式是否不同?我怎样才能让它发挥作用......?

谢谢!

2 个答案:

答案 0 :(得分:0)

根据MySQL docs,支持嵌套CASE语句,我在test_proc中尝试了您的代码并且它有效,我改变的唯一内容是table到{ {1}}因为table1

table

答案 1 :(得分:0)

这是我的分隔符。如果我将一般过程的分隔符更改为除分号以外的其他内容并将其更改回最终一切正常。