Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1183332
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2008-01-06 21:37:13

TABLE允许将讲一个数据集合作为输入,并且对于一个特定目的的select,将集合作为数据库表处理。

       如可以创建一个简单的集合保存数据集:

       create or replace TYPE tab_date is table of date

       然后就可以使用以下查询:

select /*+ cardinality(t 7) */
 column_value week_date
  from table(tab_date(trunc(sysdate - 7),
                      trunc(sysdate - 6),
                      trunc(sysdate - 5),
                      trunc(sysdate - 4),
                      trunc(sysdate - 3),
                      trunc(sysdate - 2),
                      trunc(sysdate - 1)))

然后我们就可以使用该查询作为内嵌视图。

       TABLE()函数的限制是优化器不知道将会出现多少行,默认根据块的大小,如果为8K,则为8,00016k则为16,000。通过使用cardinality(),可以告诉优化器正确的值。

 

阅读(1129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~