Oracle plsql将10000行插入到3个表中

Oracle plsql将10000行插入到3个表中,oracle,plsql,sql-insert,Oracle,Plsql,Sql Insert,我有三张桌子。旅游、旅游酒店和旅游中转 巡更表包含以下列:命名id、巡更名称、开始日期 Tour\u hotels表包含以下列:命名id、Tour\u id、hotel\u名称 Tour\u传输表有:id、Tour\u id、from\u where、to\u where列。 现在我需要在每个表中插入10000行。我的代码必须是PL/SQL和for循环。我必须只使用一个for循环将所有数据插入3个表中,并且我必须注意,tours表中的id必须与touru hotels和touru transfe

我有三张桌子。旅游、旅游酒店和旅游中转

巡更表包含以下列:命名id、巡更名称、开始日期 Tour\u hotels表包含以下列:命名id、Tour\u id、hotel\u名称 Tour\u传输表有:id、Tour\u id、from\u where、to\u where列。 现在我需要在每个表中插入10000行。我的代码必须是PL/SQL和for循环。我必须只使用一个for循环将所有数据插入3个表中,并且我必须注意,tours表中的id必须与touru hotels和touru transfer表中的touru id匹配。我是plsql的新手,所以请为我编写示例和简单代码

开始 因为我在1。。10000圈 插入到tour.tours值中 i、 “Tour”| i,truncto_日期“2019年1月1日”,“mm/dd/yyyy”+i/15,“ddd”,truncto_日期“2019年3月1日”,“mm/dd/yyyy”+i/15+i/777,“ddd”, trunc2+i/777,trunc100+i/6,truncto_日期'2019年1月1日','mm/dd/yyyy'+i/99',ddd',truncto_日期'2019年1月1日','mm/dd/yyyy'+i/98',ddd', 1,“国家”| trunci/60; ifmodi,300=0 插入tour.tour\u酒店 价值观 i、 我,‘酒店’| |我,‘国家’| | | | |特朗西/60,3+modi,3,0,0,1,特朗西日期‘2019年1月1日’,‘yyyy年月日’+i/99,‘ddd’, truncto_日期'2019年1月1日','mm/dd/yyyy'+i/98,'ddd',1; 如果莫迪指数为200=0 插入tour.tour\u酒店 价值观 i、 我,‘酒店’| |我,‘国家’| | | |特朗西/60,3+modi,3,1,0,0,特朗西日期‘2019年1月1日’,‘yyyy年月日’+i/99,‘ddd’, truncto_日期'2019年1月1日','mm/dd/yyyy'+i/98,'ddd',1; elsif modi,700=0,则 插入tour.tour\u酒店 价值观 i、 我,‘酒店’| |我,‘国家’| | | | |特朗西/60,3+modi,3,1,1,1,特朗西日期‘2019年1月1日’,‘yyyy年月日’+i/99,‘ddd’, truncto_日期'2019年1月1日','mm/dd/yyyy'+i/98,'ddd',1; 其他的 插入tour.tour\u酒店 价值观 i、 我,‘酒店’| |我,‘国家’| | | | |特朗西/60,3+modi,3,1,0,1,特朗西日期‘2019年1月1日’,‘yyyy年月日’+i/99,‘ddd’, truncto_日期'2019年1月1日','mm/dd/yyyy'+i/98,'ddd',1; 如果结束; 插入到TOUR中。TOUR_传输值 i、 我,'Buradan'|我,'Buraya'|我,truncto|u日期'2019年1月1日','dd/mm/yyyy'+i/99,'ddd', truncto_日期'2019年1月1日','dd/mm/yyyy'+i/98,'ddd',1; 端环; 终止
例如,可以用decode替换if语句

begin
    for i in 1 .. 10000 loop
        insert into tour.tours values
        (i, ('Tour ' || i), trunc(to_date('01/01/2019', 'mm/dd/yyyy')+i/15, 'ddd'), trunc(to_date('01/03/2019', 'mm/dd/yyyy')+i/15+i/777, 'ddd'),
        trunc(2+i/777), trunc(100 + i/6), trunc(to_date('01/01/2019', 'mm/dd/yyyy')+i/99, 'ddd'), trunc(to_date('01/01/2019', 'mm/dd/yyyy')+i/98, 'ddd'),
        1, ('Country ' || trunc(i/60)));

        insert into tour.tour_hotels 
            values
            (i, i, ('Hotel ' || i), ('Country ' || trunc(i/60)), 3 + mod(i, 3), 
decode(mod(i, 300),0,0,1), 
decode(mod(i, 700),0,1,0), 
decode(mod(i, 200),0,0,1), 
            trunc(to_date('01/01/2019', 'mm/dd/yyyy')+i/99, 'ddd'),
            trunc(to_date('01/01/2019', 'mm/dd/yyyy')+i/98, 'ddd'), 1);

        insert into TOUR.TOUR_TRANSFERS values
        (i, i, ('Buradan ' || i), ('Buraya ' || i), trunc(to_date('01/01/2019', 'dd/mm/yyyy')+i/99, 'ddd'),
            trunc(to_date('01/01/2019', 'dd/mm/yyyy')+i/98, 'ddd'), 1);
    end loop;
end;

您还应该在每个表名之后使用列名,以使代码更加健壮,不受列重组的影响

请在您的代码中指出您遇到的问题,以便我们提供帮助。如果这不是家庭作业问题,则更喜欢使用insert into select*而不是使用循环来完成。您可能可以使用a一次性完成此操作。我的问题是将tours表中的id插入tours酒店和tours表中的tours_id。我找不到它的语法