ITPUB论坛-中国专业的IT技术社区

 找回密码
 注册
查看: 738|回复: 5

[每日一题] PL/SQL Challenge 每日一题:2018-6-27 TABLE函数

[复制链接]
论坛徽章:
496
紫蜘蛛
日期:2007-09-26 17:05:56奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:53
跳转到指定楼层
1#
发表于 2018-6-30 04:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最先答对且答案未经编辑的puber将获得纪念章一枚(答案不可编辑但可发新贴补充或纠正),其他会员如果提供有价值的分析、讨论也可获得纪念章一枚。

每两周的优胜者可获得itpub奖励的技术图书一本。

以往旧题索引:
/forum.php?m ... eid&typeid=1808

原始出处:
http://www.plsqlchallenge.com/

作者:Steven Feuerstein

运行环境:SQLPLUS, SERVEROUTPUT已打开
注:本题给出答案时候要求给予简要说明才能得到奖品

我执行了这个语句:

CREATE OR REPLACE TYPE qz_strings_t IS TABLE OF VARCHAR2 (100)
/

CREATE OR REPLACE PACKAGE qz_pkg AUTHID DEFINER
IS
   TYPE strings_t IS TABLE OF VARCHAR2 (100);
END;
/

哪些选项在执行之后会显示 "WOW" ?

(A)
CREATE OR REPLACE FUNCTION qz_strings
   RETURN qz_strings_t
   AUTHID DEFINER
IS
   l_strings   qz_strings_t := qz_strings_t ('WOW');
BEGIN
   RETURN l_strings;
END;
/

SELECT COLUMN_VALUE FROM TABLE (qz_strings())
/

(B)
CREATE OR REPLACE FUNCTION qz_strings
   RETURN VARCHAR2
   AUTHID DEFINER
IS
BEGIN
   RETURN 'WOW';
END;
/

SELECT COLUMN_VALUE FROM TABLE (qz_strings())
/

(C)
CREATE OR REPLACE FUNCTION qz_strings  
   RETURN qz_pkg.strings_t
   AUTHID DEFINER
IS
   l_strings qz_pkg.strings_t := qz_pkg.strings_t ('WOW');
BEGIN
   RETURN l_strings;
END;
/

SELECT COLUMN_VALUE FROM TABLE (qz_strings())
/

(D)
CREATE OR REPLACE FUNCTION qz_strings (count_out OUT INTEGER)
   RETURN qz_strings_t
   AUTHID DEFINER
IS
   l_strings   qz_strings_t := qz_strings_t ('WOW');
BEGIN
   count_out := l_strings.COUNT;
   RETURN l_strings;
END;
/

SELECT COLUMN_VALUE FROM dual d, TABLE (qz_strings (d.dummy)) t
/

论坛徽章:
293
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:22海蓝宝石
日期:2012-02-20 19:24:27铁扇公主
日期:2012-02-21 15:03:13
2#
发表于 2018-6-30 13:28 | 只看该作者
答案ACD

A: 函数返回的是模式级别的集合qz_strings_t,所以可以输出
B: qz_strings  返回的是常量,不是集合类型
C: 集合是定义在包头的,也可以 qz_pkg.strings_t
D: 函数带有一个输出变量,这个只能靠猜了,估计可以。

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
23
秀才
日期:2017-08-11 15:38:46秀才
日期:2018-01-02 15:17:54秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22技术图书徽章
日期:2018-01-02 15:18:30秀才
日期:2018-03-01 10:05:18秀才
日期:2018-05-22 15:21:20
3#
发表于 2018-6-30 14:35 | 只看该作者
sql 语句 只能获取plsql 直接定义的 type 和 有一定限制的 function

使用道具 举报

回复
论坛徽章:
496
紫蜘蛛
日期:2007-09-26 17:05:56奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:53
4#
 楼主| 发表于 2018-7-3 05:53 | 只看该作者
答案A, 本题无人得奖。

A: 完美。函数返回一个字符串积极而,它的类型是在SCHEMA级别定义的。
B: 一个函数如果返回一个标量值,例如字符串,是不可以用在表函数的。你必须返回一个集合。你会看到这个错误:

ORA-22905: cannot access rows from a non-nested table item
注意,虽然错误信息说的是"non-nested table", 实际上可变数组(VARRAY)也是可以的。
C: 非管道的表函数不能够用一个包里定义的集合类型作为函数的返回类型。这个集合必须定义在SCHEMA级别。这个选项会报错:

ORA-00902: invalid datatype

D: 表函数不能够具有OUT或者IN OUT的参数。这个选项会报错:

ORA-06572: Function QZ_STRINGS has out arguments

使用道具 举报

回复
认证徽章
论坛徽章:
205
2010新春纪念徽章
日期:2010-03-01 11:20:51至尊黑钻
日期:2015-08-13 13:38:12至尊黑钻
日期:2015-02-15 09:47:472015年中国系统架构师大会纪念徽章
日期:2015-07-31 17:48:202015中国数据库技术大会纪念徽章
日期:2015-05-15 14:08:23管理团队2007贡献徽章
日期:2015-01-19 09:48:27红宝石
日期:2015-01-19 09:42:28红宝石
日期:2015-01-19 09:46:08海蓝宝石
日期:2015-02-03 10:23:39红宝石
日期:2015-02-03 10:26:04
5#
发表于 2018-7-3 09:36 | 只看该作者
答案 D 除了OUT 参数外,数据类型也不对

使用道具 举报

回复
认证徽章
论坛徽章:
21
林肯
日期:2013-07-30 18:00:55秀才
日期:2018-05-22 15:17:21秀才
日期:2018-05-22 15:21:20技术图书徽章
日期:2018-05-22 15:21:47秀才
日期:2018-05-22 15:21:47秀才
日期:2018-05-22 16:13:08秀才
日期:2018-05-22 16:13:21技术图书徽章
日期:2018-05-22 16:13:30秀才
日期:2018-05-22 16:13:30技术图书徽章
日期:2018-05-22 15:17:21
6#
发表于 2018-7-4 10:13 | 只看该作者
这题收藏了。不错

使用道具 举报

回复

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

本版积分规则

TOP技术积分榜 社区积分榜 徽章 电子杂志 团队 统计 虎吧 老博客 知识索引树 读书频道 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 | IT博客
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛 | SAP ERP系统
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表
http://www.vxiaotou.com