楼主: newkid

SQL 小测验每周一题

[复制链接]
论坛徽章:
519
奥运会纪念徽章:垒球
日期: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:532009日食纪念
日期:2009-07-22 09:30:00
201#
 楼主| 发表于 2012-5-11 04:02 | 只看该作者
本帖最后由 newkid 于 2012-5-11 04:04 编辑

2012-4-28 答案CE, 非常容易,就不解释了。
=======================================
2012-5-5 查询重写
作者:Valentin Nikotin
难度:高


我用SYS登录,创建了plch_trusted用户并赋予如下权限:

grant create session to plch_trusted identified by plch_trusted;
grant create materialized view to plch_trusted;
grant execute on sys.dbms_advanced_rewrite to plch_trusted;

然后我在HR模式下创建了如下的表,填入数据并为plch_trusted用户赋予权限:

create table hr.plch_table (id number);
insert into hr.plch_table values (1);
commit;

grant select, query rewrite on hr.plch_table to plch_trusted;

然后我用plch_trusted登录,开启查询重写,并且声明了一条重写规则,如下所示:

alter session set query_rewrite_integrity = trusted;

begin
  sys.dbms_advanced_rewrite.declare_rewrite_equivalence
  (
    name             => 'plch_rewrite',
    source_stmt      => 'select * from hr.plch_table',
    destination_stmt => /* SOME QUERY */,
    validate         => false
  );
end;
/

在同一个会话中我运行了针对HR的plch_table表的查询:
select * from hr.plch_table;

哪些选项是“可能”被显示的结果?(注:每个选项下面都说明了输出是几行几列)

(译者注:此处不太明白,应该是中间创建物化视图的步骤被忽略了,用户可以创建任意的物化视图,只要能让它输出预期结果又不破坏重写规则就可以)

(A)
1
(一行一列)

(B)
2
(一行一列)

(C)
A
(一行一列)

(D)
1        2
(一行两列)

(E)
1
2
3
(三行一列)

使用道具 举报

回复
论坛徽章:
0
202#
发表于 2012-5-11 10:57 | 只看该作者
B、D
cross join第一次见

使用道具 举报

回复

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

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表