哪些选项在执行之后会显示"Hello Earth"?
(A)
DECLARE
l_total NUMBER;
l_name VARCHAR2 (10) := 'PL/SQL';
BEGIN
IF l_name = 'PL/SQL' OR l_total > 100
THEN
DBMS_OUTPUT.put_line ('Hello Earth');
ELSE
DBMS_OUTPUT.put_line ('Hello Moon');
END IF;
END;
/
(B)
DECLARE
l_total NUMBER;
l_name VARCHAR2 (10) := 'PL/SQL';
BEGIN
IF l_total > 100
THEN
DBMS_OUTPUT.put_line ('Hello Earth');
ELSE
DBMS_OUTPUT.put_line ('Hello Moon');
END IF;
END;
/
(C)
DECLARE
l_total NUMBER;
l_name VARCHAR2 (10) := 'PL/SQL';
BEGIN
IF l_total > 100 OR l_total IS NULL
THEN
DBMS_OUTPUT.put_line ('Hello Earth');
ELSE
DBMS_OUTPUT.put_line ('Hello Moon');
END IF;
END;
/
(D)
DECLARE
l_total NUMBER;
l_name VARCHAR2 (10) := 'PL/SQL';
BEGIN
IF NVL (l_total, 200) > 100
THEN
DBMS_OUTPUT.put_line ('Hello Earth');
ELSE
DBMS_OUTPUT.put_line ('Hello Moon');
END IF;
END;
/
答案:ACD
A: 未初始化的变量为NULL, IF条件相当于IF TRUE OR NULL, 前面的TRUE会导致OR被忽略,整个结果还是TRUE
B: 未初始化的变量为NULL, IF条件里的表达式被求值为NULL, 代码会走到ELSE里面去。
C: IF 里面用了IS NULL, 结果为TRUE
D: NVL把NULL变成了200, 结果为TRUE
本文通过四个PL/SQL示例介绍了如何使用条件语句来控制程序流程,特别是展示了不同条件下HelloEarth字符串的输出逻辑。文章分析了变量初始化状态及条件判断对程序执行路径的影响。
1万+

被折叠的 条评论
为什么被折叠?



