请考虑以下简化示例:
create view viewa as select cast(1 as decimal(3)) as testa from dual;
create view viewb as
with sorted as (select testa from viewa order by testa)
select testa from sorted;
desc viewb;
在Oracle 11g上,此示例按预期打印以下内容:
Name Null Type
----- ---- ---------
TESTA NUMBER(3)
但是在Oracle 10g上,打印出以下内容:
Name Null Type
----- ---- ------
TESTA NUMBER
我很困惑 - 为什么?这是一个错误还是有一些解释?如果我删除任何内容,顺序依据,公用表表达式,另一个视图,结果将正确显示为NUMBER(3)
。当然我可以将结果改写为正确的类型,但我更愿意依赖数据库来携带正确的类型。
10g数据库的确切版本为Oracle Database 10g Enterprise Edition Release 10.2.0.4.0
。同样转载于Oracle Database 10g Express Edition Release 10.2.0.1.0
。
编辑:编辑示例以根据第一条评论使用select testa
。