2011-09-23 59 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; 

應該做的伎倆(我沒有嘗試...)

相關問題