【发布时间】:2023-03-31 17:30:01
【问题描述】:
我有一张名为stud_ans_sheet 的表。
我想运行一个循环 每次都会从表中获取下一个值。
这是一个 PL/SQL 程序,我正在使用游标执行此操作。 这是我的程序, 但它有很多错误:
set serveroutput on;
declare
cursor c_stud is select stud_no,ans from stud_ans_sheet;
v_stud c_stud%rowtype;
v_no stud_ans_sheet.stud_no%type;
answer varchar(10);
i number(3);
v_corr stud_ans_sheet.corr_ans%type;
v_wrong stud_ans_sheet.wrong_ans%type;
v_unattempt stud_ans_sheet.unattempt_ans%type;
score number(5,2);
v_ans varchar(10);
str1 varchar(40);
str2 varchar(40);
nval stud_ans_sheet.stud_no%type;
total number(5,2);
begin
answer:='AACCABAABD';
open c_stud;
loop
fetch c_stud into v_stud;
exit when c_stud%notfound;
for i in 1..10
loop
nval:= select seq.nextval from stud_ans_sheet.stud_no;
select stud_no,ans into v_no,v_ans from stud_ans_sheet where stud_no=nval;
str2:=substr(v_ans,i,1);
str1:=substr(answer,i,1);
if(str2=str1) then
update stud_ans_sheet
set corr_ans=v_corr+1;
elsif(str2='E') then
update stud_ans_sheet
set unattempt_ans=v_unattempt+1;
else
update stud_ans_sheet
set wrong_ans=v_wrong+1;
end if;
end loop;
update stud_ans_sheet
set score=corr_ans-wrong_ans*0.25+unattempt_ans;
end loop;
close c_stud;
end;
/
【问题讨论】:
-
您能否提供一些示例数据-您期望的输入和输出。您的问题并不完全清楚。
-
我编辑了上面的语句
-
我必须进行 Mcq 测试...其中 E 表示未尝试。我在表中插入了 10 个值。触发器执行后,我必须找到正确的答案,错误的答案,未尝试的答案,最后必须找到所有 10 个学生的分数
-
我已经尝试过单身学生并且表现良好,但我需要更新 1 个触发器中的所有字段
-
您是否遇到任何错误或有什么问题?
标签: plsql plsqldeveloper cursors database-cursor