sql插入数据时使用loop循环报错

题目:有五个班级,每个班有5个学生,学生的考试成绩均随机生成,求出各个班的总分和平均分。

思路:先创建一张表

create table chengjibiao (class number(5) primary key,stu number(2),stscore number(5));

再插入数据(班级编号1到5,学生编号也是1到5,成绩随机取整)
begin
 for a in 1..5 loop
    for b in 1..5 loop
    insert into chengjibiao(class,stu,stscore) values(a,b,round(dbms_random.value(1,100)));
    end loop ;
 end loop;
end;
第一次报错:ORA-00001: 违反唯一约束条件

自己百度后,修改为

begin
 for a in 1..5 loop
    for b in 1..5 loop
    insert into chengjibiao(class,stu,stscore) values(a,b,round(dbms_random.value(1,100)))
    on DUPLICATE KEY update class=a,stu=b, stscore=round(dbms_random.value(1,100);
    end loop ;
 end loop;
end;

第二次报错:PL/SQL: ORA-00933: SQL 命令未正确结束

求教各位,怎么修改?或者直接给出更好的思路

 

加个sleep吧,估计是数据库反应不过来。

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

你建表指定的主键是班级,作为一个分数表,班级肯定会出现重复啊,一个班级有很多人的。就你现在这个表,主键应该是班级号+学生号

但你现在这个逻辑还缺少课程号,学生怎么会只有一个课程呢?

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y