目前我们可能会对这样的IF块进行修改:
IF boolean THEN
statements;
ELSE
IF boolean THEN
statements;
ELSE
statements;
END IF;
END IF;
然而,有几种情况并不需要。然后一个更好的方法是使用接近通常switch
语句的东西。
相关主题:
答案 0 :(得分:2)
为了模仿switch语句,将开关值直接放在“WHEN”之前的“CASE”之后。每个when语句都会检查它的值是否等于CASE值。
使用专门的case语句返回颜色词的十六进制颜色值的示例:
DO $$
DECLARE
test_color varchar;
hex_color varchar;
BEGIN
test_color := 'blue';
hex_color :=
CASE test_color
WHEN 'red' THEN
'#FF0000'
WHEN 'blue' THEN
'#0000FF'
WHEN 'yellow' THEN
'#FFFF00'
ELSE --we do not use that color, replace with white
'#FFFFFF'
END;
END $$
我无法在我的计算机上测试匿名块,所以这是一个我测试过的直接SQL语句,可用于匿名块:
SELECT
CASE 'blue'
WHEN 'red' THEN
'#FF0000'
WHEN 'blue' THEN
'#0000FF'
WHEN 'yellow' THEN
'#FFFF00'
ELSE --we do not use that color, replace with white
'#FFFFFF'
END;
答案 1 :(得分:0)
带有anonymous code block程序块的PL / pgSQL CASE的基本/基本结构是:
DO $$ BEGIN
CASE
WHEN boolean-expression THEN
statements;
WHEN boolean-expression THEN
statements;
...
ELSE
statements;
END CASE;
END $$;
参考文献: