构建PL / SQL IF THEN语句的更好方法是什么?

时间:2009-01-20 16:16:15

标签: database oracle syntax plsql

只是想知道是否有更好的方法在ORACLE中编写以下PL / SQL代码?

IF(p_c_courtesies_cd is not null 
OR  p_c_language_cd is not null
OR v_c_name is not null
OR v_c_firstname is not null
OR v_c_function is not null
OR p_c_phone is not null
OR p_c_mobile is not null
OR p_c_fax is not null
OR v_c_email is not null
) THEN
     -- Do something
END IF;

4 个答案:

答案 0 :(得分:9)

If coalesce( expr1, expr2, ... expr_n ) is not null then do something end if;

See here.

(感谢Tony纠正)

答案 1 :(得分:2)

我的回答是简单的“否”。

虽然有几种不同的方式来编写相同的构造,但我认为没有必要“更好”。

任何人都可以查看IF语句并确切知道它的含义。基于连接或使用合并运算符的替代方案只是模糊了意图。

答案 2 :(得分:1)

如果coalesce(expr1,expr2,... exprn)不为null,那么......

答案 3 :(得分:0)

另一种方式,利用Oracle将NULL和''视为相同的事实:

IF p_c_courtesies_cd 
   || p_c_language_cd 
   || v_c_name 
   || v_c_firstname 
   || v_c_function 
   || p_c_phone 
   || p_c_mobile p_c_fax 
   || v_c_email is not null
THEN
     -- Do something
END IF;