2011-09-23 63 views
2

给定两次,我如何在Oracle表中每小时插入一行?Oracle - 在两次之间每小时插入一行

Start Time: 3.00 PM 

End Time: 6.00 PM 

Name: 'Asdfg' 

预计数据将产生:

Name  StartTime  EndTime 
ASDFG  3.00   4.00 
ASDFG  4.00,   5.00 
ASDFG  5.00   6.00 
+0

你从哪里插入** **?客户端应用程序或存储过程(如“plsql”标记可能会提示)? –

+0

SP内。我得到两个参数作为StartTime和EndTime。 – Asdfg

+0

另外,你是否希望实际的INSERT **执行**间隔一个小时,或者你只需​​要“空出”插入的数据,而INSERT本身可以一次完成? –

回答

2

这确实是没有PL/SQL中,一个插入。你可以参数化开始和结束时间,并在你的程序中使用它:

INSERT INTO tbl (NAME, starttime, endtime) 
(SELECT 'ASDFG', t1, t2 
    FROM (SELECT to_char((to_date('3.00 PM','HH.MI AM')+(LEVEL-1)/24),'HH.MI AM') t1 
       , to_char((to_date('3.00 PM','HH.MI AM')+LEVEL/24), 'HH.MI AM') t2 
      FROM dual 
     CONNECT BY LEVEL <= (to_date('6.00 PM','HH.MI AM') - to_date('3.00 PM','HH.MI AM')) * 24)); 
0
CurrentTime := StartTime; 
WHILE CurrentTime <= EndTime 
LOOP 
    INSERT INTO MY_TABLE VALUES (CurrentTime); 

    CurrentTime := CurrentTime + (1/24); 

END LOOP; 

COMMIT; 

应该做的伎俩(我没有尝试...)