将虚拟记录添加到视图的优雅方法?

时间:2019-01-25 12:15:44

标签: sql oracle

我有一个视图(oracle DB),想创建另一个带有附加虚拟记录的视图。一个人在这里工作的方式告诉我的方法虽然很简单,但是很有效:

#VALUE!

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

谢谢。

2 个答案:

答案 0 :(得分:0)

您可以使用分层查询来添加请求的虚拟行数(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

答案 1 :(得分:0)

如果您接受定义TYPE的负担,则可以使用NESTED TABLES在单个查询中收集数据

CREATE TYPE C AS OBJECT (  
   id_num  INT,
   name    VARCHAR2(10),
   trans_date DATE)  
/

CREATE TYPE TC AS TABLE OF C   
/

SELECT id_num, name, trans_date 
FROM TABLE(TC(
--- your data here
C(1, 'aaaa', sysdate),
C(2, 'bbbb', DATE'2019-01-26'),
C(3, 'cccc', DATE'2018-01-01')
---
));

    ID_NUM NAME       TRANS_DATE        
---------- ---------- -------------------
         1 aaaa       26.01.2019 12:27:25 
         2 bbbb       26.01.2019 00:00:00 
         3 cccc       01.01.2018 00:00:00