Оператор Select внутри оператора IF для сравнения заданной строки с записями в таблице - PullRequest
0 голосов
/ 28 февраля 2020

Напишите процедуру (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;
...