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
给定两次,我如何在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
这确实是没有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));
CurrentTime := StartTime;
WHILE CurrentTime <= EndTime
LOOP
INSERT INTO MY_TABLE VALUES (CurrentTime);
CurrentTime := CurrentTime + (1/24);
END LOOP;
COMMIT;
应该做的伎俩(我没有尝试...)
你从哪里插入** **?客户端应用程序或存储过程(如“plsql”标记可能会提示)? –
SP内。我得到两个参数作为StartTime和EndTime。 – Asdfg
另外,你是否希望实际的INSERT **执行**间隔一个小时,或者你只需要“空出”插入的数据,而INSERT本身可以一次完成? –