Напишите процедуру (oracle pl sql) для выполнения любого из следующих действий: (a) обновите курс таблицы и установите плату за ввод имени курса, равную стоимости курса java. (б) вставить новую строку для данного входного курса и установить минимальную плату за обучение из всех курсов, доступных в таблице. Условие: делай (а), если имя входного курса уже присутствует в таблице, в противном случае делай (б), если имя входного курса отсутствует в таблице.
Я предоставляю здесь основные сведения c таблицы:
create table course(cid number primary key, cname varchar2(100), duration number, fee number);
insert into course (CID, CNAME, DURATION, FEE)
values (101, 'java', 30, 13000);
insert into course (CID, CNAME, DURATION, FEE)
values (102, 'c', 20, 5000);
insert into course (CID, CNAME, DURATION, FEE)
values (104, 'oracle', 20, 20000);
insert into course (CID, CNAME, DURATION, FEE)
values (105, 'python', 20, 30000);
insert into course (CID, CNAME, DURATION, FEE)
values (106, 'sql', 20, 1000);
Я попробовал приведенный ниже код, но я не знаю, как сравнить данное имя для каждой строки в таблице внутри оператора IF. Пожалуйста, посмотрите код и помогите мне.
create or replace procedure proc_CourseFeeUpdateTry(coursename in course.cname%type,
java_fee out number) is
n_fee number;
j_fee number;
begin
if course.cname = coursename then --i'm getting error here
select t.fee into j_fee from course t where t.cname = 'java';
java_fee := j_fee;
update course t set t.fee = java_fee where t.cname = coursename;
dbms_output.put_line('new course added');
else
dbms_output.put_line(sqlerrm || '-' || sqlcode);
select min(t.fee) into n_fee from course t;
java_fee := n_fee;
insert into course values (103, coursename, 40, java_fee);
end if;
commit;
end;