条件控制
可以通过 IF 和 CASE 两种方式进行条件控制。
IF条件控制
(1) IF ... THEN ... END IF |
IF ... THEN ... ELSEIF ... THEN ... ELSE ... END IF
语法中 ,如果 ELSEIF 后面省略 ELSE,直接用 END IF 结束,函数在调用时若条件落在 ELSE区间,调用不会报错,但返回结果为空。两个 CASE
语法中,如果省略 ELSE,直接用 END CASE 结束,函数在调用时若条件落在 ELSE 区间,函数将报错。
可以通过以下两个例子来进行验证:
IF ... THEN ... ELSEIF ... THEN ... ELSE ... END IF
的例子
CREATE OR REPLACE FUNCTION elseif_demo_(IN no int) RETURNS varchar AS |
CASE
(1) CASE ... WHEN ... THEN ... ELSE ... END CASE |
CASE WHEN ...THEN ... ELSE ... END CASE
的例子
CREATE OR REPLACE FUNCTION else_demo_(IN no int) RETURNS varchar AS |
两个例子的查询结果分别如下:
highgo=# SELECT elseif_demo_(323); |
CASE 两种用法的区别在于,CASE ... WHEN...
将判断语句拆成了两部分,WHEN
可以理解为一个等于号,只有 WHEN
右边的内容是可变的;CASE WHEN...
的判断语句在 WHEN 的右面,判断条件不限于一个属性。
可以通过下面的例子进行理解:
CREATE OR REPLACE FUNCTION case1_demo(IN no int) RETURNS varchar AS |
CREATE OR REPLACE FUNCTION case2_demo(IN no int, name varchar) RETURNS varchar AS |