Member 13047430 Ответов: 1

Как повторно использовать этот оператор хранимой процедуры SQL в oracle


create or replace procedure updateStudentResult(id int,
m1 in int,
m2 in int,
m3 in int,
tot out int,
avg out float,<small><small><small><small></small></small></small></small>
grade out char)
as

beginselect marks1,marks2,marks3 into m1,m2,m3 from students where sid=id;

tot:=m1+m2+m3/3;
avg:=tot/3;

if (avg >= 85) then
grade:='A';

elsif (avg >= 65) then
grade:='B';

elsif (avg >= 50) then
grade:='C';

else
grade:='D';

end if;
UPDATE students SET total=tot,average=avg,grade=grade from students where sid=id;
end;


Что я уже пробовал:

я пытаюсь создать оператор вызова хранимой процедуры в jdbc
, используя oracle, как решить эту проблему?

1 Ответов

Рейтинг:
1

RAMASWAMY EKAMBARAM

(1)
Измените последний параметр в объявлении процедуры, чтобы избежать двусмысленности:
создание или замена процедуры updateStudentResult(id int,
М1 в инт,
м2 в инт,
м3 в инт,
тот из инт,
СР из поплавка,
grd out char) -- класс переименован в grd

и замените каждое вхождение 'grade : =' на ' grd := '


(2)
следующее, По-видимому, является недосмотром:
tot:=m1+m2+m3 / 3;
скорее всего вы имели в виду:
tot:=m1+m2+m3;

(3)
Студентов набор обновлений, итого=тотъ,средний=средний,класс=класс от студентов, где Sid=идентификатор;'
похоже, это синтаксическая ошибка
должно быть

UPDATE students SET 
total=tot,
average=avg,
grade=grd 
where sid=id;


Member 13047430

если (avg >= 85), то
класс:= "а";

elsif (avg >= 65) тогда
класс:= 'B';

elsif (avg >= 50) затем
класс:= 'C';


ошибки в каждой строке elsif и if
Столкнулся с символом " = " при ожидании одного из
следующий:
(