Yoh*_*oda 15 postgresql conditional case plpgsql
我们不能CASE在SQL SELECT语句之外使用条件吗?
例如:
CASE
WHEN old.applies_to = 'admin' THEN _applies_to = 'My Self'
ELSE _applies_to = initcap(old.applies_to)
END
_summary = _summary || '<li>Apply To: ' || _applies_to || '</li>';
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
ERROR: syntax error at or near "_summary"
LINE 86: _summary = _summary || '<li>Apply To: ' || _applies ...
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 18
这涉及在plpgsql函数或语句中使用的过程语言PL/pgSQL的条件控制结构CASE.不要与SQL的表达混淆.不同的语言!而且语法规则也略有不同.DOCASE
虽然SQL CASE可以嵌入到PL/pgSQL代码中的SQL表达式中(这主要只是SQL命令的粘合剂),但是你不能拥有独立的SQL CASE表达式(这是无意义的).
-- inside plpgsql code block:
CASE
WHEN old.applies_to = 'admin' THEN
_applies_to := 'My Self';
ELSE
_applies_to := initcap(old.applies_to);
END CASE;
Run Code Online (Sandbox Code Playgroud)
您必须使用以semicolon(;)结尾的完全限定语句并将END CASE其关闭.
根据文档,语句的ELSE关键字不是可选的.我引用上面的链接:CASE
如果未找到匹配项,
ELSE则执行语句; 但如果ELSE不存在,则CASE_NOT_FOUND引发异常.
但是,您可以使用空ELSE:
CASE
WHEN old.applies_to = 'admin' THEN
_applies_to := 'My Self';
ELSE
-- do nothing
END CASE;
Run Code Online (Sandbox Code Playgroud)
这与SQL CASE表达式不同,后者ELSE是可选的,但如果关键字存在,则还必须给出表达式!
| 归档时间: |
|
| 查看次数: |
17919 次 |
| 最近记录: |