所以我试图填写1960年1月1日到2020年12月的日期表。我尝试写一个查询但是我对plsql很新,我害怕我必须因为这没什么用,搞砸了。
DECLARE
start_date DATE;
end_date DATE;
BEGIN
start_date := '01-jan-1960';
end_date := '31-dec-2020';
LOOP
INSERT INTO samp VALUES(start_date);
start_date := start_date + 1;
EXIT WHEN start_date = end_date;
END LOOP;
END;
非常感谢任何帮助。
答案 0 :(得分:0)
在这种情况下完全不需要PL / SQL,使用简单的命令:
INSERT INTO samp (start_date)
SELECT DATE'1959-12-31' + LEVEL "DATE" FROM DUAL CONNECT BY LEVEL <= DATE'2020-12-31' - DATE'1959-12-31'
更新:
您可以使用SQL对数据执行更多操作。当您执行使用SQL无法执行的操作时,更常使用PL / SQL,通常只是控制SQL命令的流程。
无论如何,你的实施几乎没问题。
DECLARE
start_date DATE;
end_date DATE;
BEGIN
start_date := DATE'1960-01-01'; -- Don't rely on implicit conversion!
end_date := DATE'2020-12-31';
LOOP
INSERT INTO samp /* add column list here */ VALUES (start_date);
start_date := start_date + 1;
EXIT WHEN start_date = end_date + 1; -- last date should be included
END LOOP;
END;