【发布时间】:2016-12-23 02:03:08
【问题描述】:
我目前正在编写一个使用 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 表达式?如果是这样,它的格式是否不同?我怎样才能让它工作...?
谢谢!
【问题讨论】:
-
您可以随意嵌套 case 语句,但请认真考虑反对它,因为这几乎是意大利面条逻辑的定义。
-
无论您尝试做什么,这都可能成为您系统的不良先例
-
我们正在自动生成某个报告。根据过程中输入的模板,使用不同的查询选择。语法有什么问题吗?如果允许将表达式放在语句中,为什么会说我有语法错误?
标签: mysql stored-procedures case-statement case-expression