有奖活动:PL/SQL Challenge 每日一题:2013-3-25 NUMBER型数据

[复制链接]
查看11 | 回复9 | 2008-9-15 01:28:12 | 显示全部楼层 |阅读模式
最先答对且答案未经编辑的puber将获得奥运章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得奥运章一枚。
以往旧题索引:
http://www.itpub.net/forum.php?m ... eid&typeid=1808
http://www.itpub.net/thread-1499223-1-1.html
原始出处:
http://www.plsqlchallenge.com/
作者:Steven Feuerstein
运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品
我写了如下未完成的函数:
CREATE OR REPLACE FUNCTION plch_to_number (
hundreds_in IN INTEGER,
tens_in IN INTEGER,
ones_in IN INTEGER)
RETURN INTEGER
IS
BEGIN
/*RETURN*/
END;
/
哪些选项可用来取代"/*RETURN*/"注释从而使得下列代码块执行之后会显示"23"?
BEGIN
DBMS_OUTPUT.put_line (plch_to_number (1, 2, 3) - 100);
END;
/
(A)
RETURN hundreds_in + tens_in + ones_in;

(B)
RETURN hundreds_in || tens_in || ones_in;

(C)
RETURN hundreds_in * 100 + tens_in * 10 + ones_in;

(D)
RETURN (hundreds_in + 100) + (tens_in + 10) + ones_in;


回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
感觉是bc
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
楼上的朋友太早了。。。下次一定要拿奖!~~
答案是(B)(C)!
选项(A):函数plch_to_number的返回值是(1+2+3)-100 = -94
选项(D):函数plch_to_number的返回值是((1+100)+(2+10)+3)-100 = 16
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
up,今天的题目好简单。。。。
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
今天的题目,我完全能看懂,还是比较简单的,bc
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
今天这题我居然也看懂了,但没有用过B
回复

使用道具 举报

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

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
和大家感觉一样bc
说明下b
RETURN hundreds_in || tens_in || ones_in;
隐式转换,等价语句是
return to_number(to_char(hundreds_in) ||to_char( tens_in) ||to_char(ones_in));
回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
答案BC, 3楼得奖。
A: 会显示"-94"
B: 用字符串拼接的办法,利用隐式转换形成新的数字。但如果传入的参数不止一位数字就错了。不推荐这种做法。
C: 这是正确做法,只要参数非空就会正确转换。
D: 公式错了。
(译者注:挺无聊的题目)

回复

使用道具 举报

千问 | 2008-9-15 01:28:12 | 显示全部楼层
newkid 发表于 2013-3-28 04:09
答案BC, 3楼得奖。
A: 会显示"-94"
B: 用字符串拼接的办法,利用隐式转换形成新的数字。但如果传入的参数 ...

哈哈,楼主早啊!谢谢哦!祝好!~
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行