Элегантный способ добавить фиктивные записи в представление? - PullRequest
0 голосов
/ 25 января 2019

У меня есть представление (oracle DB) и я хочу создать другое с дополнительными фиктивными записями.То, как мне сказал один парень здесь на работе, довольно нелегко, но работает:

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

Есть ли способ избежать объединения по одному на запись и вместо этого объединить со всем набором записей?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 26 января 2019

Если вы согласны с бременем определения 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 
0 голосов
/ 25 января 2019

Вы можете использовать иерархический запрос для добавления запрошенного числа фиктивных строк (до 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...