PL/SQL Challenge 每日一题:2017-11-1 CASE语句的ELSE子句

[复制链接]
查看11 | 回复4 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
(原发表于 2011-8-23)
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。
每两周的优胜者可获得itpub奖励的技术图书一本。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
这个代码块执行之后屏幕上会显示什么?
DECLARE
l_selection VARCHAR2 (1) := 'C';
l_value VARCHAR2 (100) := 'Fruit';
BEGIN
CASE l_selection
WHEN 'A'
THEN
l_value := 'Apple';
WHEN 'B'
THEN
l_value := 'Banana';
END CASE;
DBMS_OUTPUT.put_line (NVL (l_value, 'NULL'));
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Error');
END;
/
(A)
Fruit
(B)
Cherry
(C)
Error
(D)
NULL

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
ccase语句没有分支选项会报错

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层

答案C, 2楼得奖。
如果一个CASE语句的WHEN子句没有找到任何匹配,并且那个语句没有ELSE子句,Oracle会报错:
"ORA-06592: CASE not found while executing CASE statement"
你并不一定要为一个CASE表达式提供ELSE子句。如果WHEN子句没有找到匹配,Oracle会为那个表达式返回NULL。
当你用CASE语句的时候,你不一定要包含ELSE子句。然而,如果没有包含,你必须确保至少有一个WHEN条件为TRUE。

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
又涨知识了。好多细节啊
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
截止到今日每日一题奖励已发,辛苦newkid大师
本期从10-18到11-1期
每10期题目发一次奖,10期内获奖最多的再奖励一本技术图书~原有的秀才系列徽章继续根据兑换规则兑换礼品~
大家多多努力哦~
本期获奖情况如下(10-20、10-27、无人获奖)
blacklm
却早已分离
却早已分离
却早已分离
却早已分离
却早已分离
hengun888
却早已分离
恭喜 却早已分离 同学获得一本技术图书,图书徽章已发,可以到书单换任意一本~
各位其他童鞋继续加油哦~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行