新博客http://www.cnblogs.com/zhjh256 欢迎访问
分类: 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,000;16k则为16,000。通过使用cardinality(),可以告诉优化器正确的值。