2017-02-09 69 views
-1

表所列日期间的所有日期Oracle触发器:given_dates用于获取

BOOK_DT1 BOOK_DT2 USERID  
--------- --------- -------------------- 
22-SEP-17 12-NOV-17 rahul  
20-JAN-17 10-FEB-17 ABC  
02-MAR-17 10-MAR-17 ZXC  
13-NOV-17 14-NOV-17 tth 

当我插入一行:

insert into given_dates('01-JAN-2017','05-JAN-2017','AAA'); 

触发应该被称为插入细节到另一个见下表

给出

表:all_dates_used

表:given_dates

DATET1  USERID  
--------- --------- 
01-JAN-17  AAA  
02-JAN-17  AAA  
03-JAN-17  AAA  
04-JAN-17  AAA  
05-JAN-17  AAA 
+0

什么是你的问题? – GurV

+0

你尝试过什么吗? – Aleksej

回答

1

如果我没有理解好你的需要,这可能是一个办法:

create or replace trigger insertDates 
after insert on given_dates 
for each row 
begin 
    insert into all_dates_used(DATET1 , USERID) 
    select :new.BOOK_DT1 + level -1, :new.USERID 
    from dual 
    connect by :new.BOOK_DT1 + level -1 <= :new.BOOK_DT2; 
end; 

测试:

SQL> select * from all_dates_used; 

no rows selected 

SQL> select * from given_dates; 

no rows selected 

SQL> insert into given_dates (BOOK_DT1, BOOK_DT2, USERID) values (date '2017-02-01', date '2017-02-08', 'USR'); 

1 row created. 

SQL> select * from all_dates_used; 

DATET1 USERID 
--------- ---------- 
01-FEB-17 USR 
02-FEB-17 USR 
03-FEB-17 USR 
04-FEB-17 USR 
05-FEB-17 USR 
06-FEB-17 USR 
07-FEB-17 USR 
08-FEB-17 USR 

8 rows selected. 

SQL>