0
以下のコードでエラーが発生しています。エラーは、#1329 - データなし - 行がフェッチ、選択、または処理されたことです。これは正確に何を意味し、私は間違って何をしていますか?おかげエラー1329(02000):データがありません - ローがフェッチ、選択、または処理されました
create or replace procedure grade()
begin
declare no,s1,s2,s3,cnt,i,per int(20);
declare c1 cursor for select roll,sub1,sub2,sub3 from student;
set i=0;
select count(*) into cnt from student;
open c1;
while i<=cnt do
fetch c1 into no,s1,s2,s3;
set per=s1+s2+s3/3;
if per>=90 then
update student set grade='A+' where roll=no;
elseif (per<90 and per>=80)then
update student set grade='A' where roll=no;
elseif (per<80 and per>=70)then
update student set grade='B+' where roll=no;
elseif (per<70 and per>=60)then
update student set grade='B' where roll=no;
elseif (per<60 and per>=50)then
update student set grade='C+' where roll=no;
elseif (per<50 and per>=40)then
update student set grade='C' where roll=no;
else
update student set grade='FAIL' where roll=no;
end if;
set i=i+1;
end while;
close c1;
end$$
学生には何かが含まれていますか? –
ロール、サブ1、サブ2、サブ3、レコード10行の4列 – Abhishek
生徒のテーブル全体をすべてのループで更新していますか?なぜただ一つの更新文を書くのではないのですか?また、elsifsの主要な条件は必要ありません。例えば、> = 90以外のものがあれば、それは既に<90である。これは論理的でないコードのように見える。決して7つの更新ステートメントがあるのはなぜですか?変数にグレードを格納し、ifステートメントの外側に1つのステートメントを置くか、caseステートメントを使用して全体を取り除きます –