oracle 每日一题-function.RETURN语句
来源:互联网 发布:聚合数据接口使用 编辑:程序博客网 时间:2024/05/17 15:03
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
哪些选项创建了一个名为PLCH_IS_WONDERFUL的函数,使得下列代码块执行之后:
BEGIN
DBMS_OUTPUT.put_line (plch_is_wonderful ('CHOCOLATE'));
DBMS_OUTPUT.put_line (plch_is_wonderful ('BROKEN LEG'));
END;
/
你会在屏幕上按所示顺序看到如下的文本:
YES
NO
(A)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RETURN 'YES';
END IF;
RAISE PROGRAM_ERROR;
EXCEPTION
WHEN PROGRAM_ERROR
THEN
RETURN 'NO';
END plch_is_wonderful;
/
(B)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RETURN 'YES';
ELSE
RETURN 'NO';
END IF;
END plch_is_wonderful;
/
(C)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN CASE thing_in WHEN 'CHOCOLATE' THEN 'YES' ELSE 'NO' END;
END plch_is_wonderful;
/
(D)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
e_is_wonderful EXCEPTION;
e_is_not_wonderful EXCEPTION;
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RAISE e_is_wonderful;
ELSE
RAISE e_is_not_wonderful;
END IF;
EXCEPTION
WHEN e_is_wonderful
THEN
RETURN 'NO';
WHEN e_is_not_wonderful
THEN
RETURN 'YES';
END plch_is_wonderful;
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
哪些选项创建了一个名为PLCH_IS_WONDERFUL的函数,使得下列代码块执行之后:
BEGIN
DBMS_OUTPUT.put_line (plch_is_wonderful ('CHOCOLATE'));
DBMS_OUTPUT.put_line (plch_is_wonderful ('BROKEN LEG'));
END;
/
你会在屏幕上按所示顺序看到如下的文本:
YES
NO
(A)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RETURN 'YES';
END IF;
RAISE PROGRAM_ERROR;
EXCEPTION
WHEN PROGRAM_ERROR
THEN
RETURN 'NO';
END plch_is_wonderful;
/
(B)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RETURN 'YES';
ELSE
RETURN 'NO';
END IF;
END plch_is_wonderful;
/
(C)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
BEGIN
RETURN CASE thing_in WHEN 'CHOCOLATE' THEN 'YES' ELSE 'NO' END;
END plch_is_wonderful;
/
(D)
CREATE OR REPLACE FUNCTION plch_is_wonderful (thing_in IN VARCHAR2)
RETURN VARCHAR2
IS
e_is_wonderful EXCEPTION;
e_is_not_wonderful EXCEPTION;
BEGIN
IF thing_in = 'CHOCOLATE'
THEN
RAISE e_is_wonderful;
ELSE
RAISE e_is_not_wonderful;
END IF;
EXCEPTION
WHEN e_is_wonderful
THEN
RETURN 'NO';
WHEN e_is_not_wonderful
THEN
RETURN 'YES';
END plch_is_wonderful;
/
A: (不推荐)
第一个问题是我依赖于异常部分来处理我程序的一个逻辑分支。
第二个问题是我把这个方法和更常见也更好的条件逻辑混合使用。
极其令人迷惑!
B:
不依赖于异常,非常直接的IF。唯一不受推荐的理由是在这个情况下,CASE表达式更好。
C:(推荐)
没有将异常用于条件逻辑。简洁地使用CASE来避免冗余代码(此处指重复的RETURN)
D: 如同推特上常说的"OMG"(天哪)。声明了两个异常。在IF语句中,抛出了不同的异常。
然后在异常部分,处理每个异常并且返回所需的值。
啊哦,返回的值是错的!
你得仔细读这代码!
并且别再写这么复杂的代码。
0 0
- oracle 每日一题-function.RETURN语句
- oracle 每日一题-数据库约束
- oracle 每日一题-avg求平均值
- oracle 每日一题-反向键索引
- oracle 每日一题-case表达式
- oracle 每日一题-LONG数据类型
- oracle 每日一题-exists条件
- oracle 每日一题-游标的参数
- oracle 每日一题-分析函数row_number
- oracle 每日一题-数字格式化模型
- 每日一Lua(2)-语句
- JavaScript function return function..
- oracle 每日一题-分析函数的RANGE/ROW窗口
- oracle 每日一题-12c新功能:json函数
- oracle 每日一题-可修改的视图
- 关于return function(){}常见的问题(一)
- 每日一记-Mybatis动态语句
- Dependencies of Function-Based Indexes【每日一译】--20121212
- Openlayers之图形绘制
- eclipse 与git 整合 Egit 用户指南
- jQuery 选择器 - 1
- springmvc中的数据校验
- linux部分指令演示
- oracle 每日一题-function.RETURN语句
- C++11新特性——大括号初始化
- 蓝桥杯 2014 5 重复模式
- 解析Linux下的stat命令
- 糟糕的畢業季
- Dynamics 365 支持使用Web Api 通过名称来检索元数据
- Linux最常用的20条命令
- 安装2502,2503错误拯救
- 1053. Path of Equal Weight (30)