首页 > 解决方案 > 将虚拟记录添加到视图的优雅方式?

问题描述

我有一个视图(oracle DB),想用额外的虚拟记录创建另一个。工作中的一个人告诉我的方式相当不雅但有效:

select * from SOME_VIEW
union all select a0,b0,c0,d0... from dual
union all select a1,b1,c1,d1... from dual
...

有没有办法避免为每条记录建立一个联合,而是与整个记录集建立一个联合?

谢谢。

标签: sqloracle

解决方案


您可以使用分层查询来添加请求的虚拟行数(低于 5 行):

select object_id, object_name from user_objects
union all
select level, 'DUMMY '||lpad(level, 2, '0') from dual connect by level <= 5;

这给了我们:

 OBJECT_ID OBJECT_NAME
---------- ---------------------
   4665358 SOME_OBJECT
   4665359 SOMETHING
       ... ...
         1 DUMMY 01
         2 DUMMY 02
         3 DUMMY 03
         4 DUMMY 04
         5 DUMMY 05

推荐阅读