Oracle SQL在具有日期范围的表中插入多行

Oracle SQL在具有日期范围的表中插入多行,sql,oracle,calendar,Sql,Oracle,Calendar,我找到了一个相关问题的以下答案 with calendar as( select :startdate + rownum - 1 as day from dual connect by rownum < :enddate - startdate ) select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName" from calendar

我找到了一个相关问题的以下答案

with calendar as(
    select :startdate + rownum - 1 as day
    from dual
    connect by rownum < :enddate - startdate
)
select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName"
from calendar

此SQL为一系列日期生成大量日期和相关信息。有人能告诉我如何将其包装到SQL语句中,以便将“选择所有行”中的列插入到另一个表中。

如果要插入数据的表已经存在,请使用“插入到”:

编辑-实际上注释完全正确-没有考虑Oracle:-以下是在Oracle中从SQL语句创建表的正确方法:

伪列级别也将起作用

insert into tgt_tbl(id,dt,dy)
select distinct level,:startdate+level-1,to_char(:startdate+level-1,'Day') from dual
connect by level<=(:enddate-:startdate)+1

尝试更改这些日期值以获取所需范围内的日期值

-1 SELECT INTO is PL/SQL语法,而不是插入到表中。是的,如果要使用SELECT中的数据创建新表,请使用create table as SELECT。。。。在Oracle中,select into用于用select中的值填充plsql变量,不能用于创建新表。@JeffreyKemp-你完全正确-没有考虑TSQL vs plsql-编辑了我上面的答案以显示在Oracle中的正确用法。再次感谢。
with calendar as ( 
    select :startdate + rownum - 1 as day 
    from dual 
    connect by rownum < :enddate - startdate ) 
select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName" into newtable
from calendar
with calendar as ( 
    select :startdate + rownum - 1 as day 
    from dual 
    connect by rownum < :enddate - startdate ) 
CREATE TABLE newtable
AS 
(select rownum as "S.No", to_date(day,'dd_mm_yyyy') as "Cal_Dt", to_char(day,'day') as "DayName"
from calendar)
insert into tgt_tbl(id,dt,dy)
select distinct level,:startdate+level-1,to_char(:startdate+level-1,'Day') from dual
connect by level<=(:enddate-:startdate)+1
CREATE TABLE DATES_TABLE 
(
  Date_Field   DATE
);

INSERT INTO DATES_TABLE
(
  Date_Field
)
SELECT ROWNUM - 1 + TO_DATE('01-Jun-2004','dd-mon-yyyy') Date_Field
FROM all_objects
WHERE ROWNUM < TO_DATE('30-Jun-2004','dd-mon-yyyy') - TO_DATE('01-Jun-2004','dd-mon-yyyy') + 2;