PL / SQL Что я делаю не так? - PullRequest
       10

PL / SQL Что я делаю не так?

0 голосов
/ 04 февраля 2020
DECLARE
updated_commission float;
cur_var a%rowtype;
BEGIN
dbms_output.put_line('EMPLOYEE_NO     FNAME     LNAME     COMMISSION');
dbms_output.put_line('-----------------------------------------------');
WHILE cur_var%found AND COMMISSION IS NOT NULL
LOOP
CASE BRANCH_NO
  WHEN 100 THEN updated_commission := COMMISSION * 1.10
  WHEN 101 THEN updated_commission := COMMISSION * 1.15
  WHEN 104 THEN updated_commission := COMMISSION * 1.20
  dbms_output.put_line(cur_var.EMPLOYEE_NO||'       '||cur_var.FNAME||'       '||cur_var.LNAME||'     
'||cur_var.COMMISSION||'      '||cur_var.updated_commission);
END LOOP;
END;

(продолжает выдавать ошибку об утверждении CASE, и я не могу выяснить, что не так, пожалуйста, помогите) PS (Должно быть некоторое время l oop для назначения)

Ответы [ 2 ]

0 голосов
/ 05 февраля 2020

В качестве другого способа исправить ваше утверждение CASE вы можете рассмотреть:

DECLARE
  updated_commission  NUMBER;
  cur_var             a%rowtype;
BEGIN
  dbms_output.put_line('EMPLOYEE_NO     FNAME     LNAME     COMMISSION');
  dbms_output.put_line('-----------------------------------------------');

  WHILE cur_var%found AND COMMISSION IS NOT NULL
  LOOP
    CASE BRANCH_NO
      WHEN 100 THEN updated_commission := COMMISSION * 1.10
      WHEN 101 THEN updated_commission := COMMISSION * 1.15
      WHEN 104 THEN updated_commission := COMMISSION * 1.20
    END CASE;

    dbms_output.put_line(cur_var.EMPLOYEE_NO || '       ' ||
                         cur_var.FNAME       || '       ' ||
                         cur_var.LNAME       || '         ' ||
                         cur_var.COMMISSION  || '      ' ||
                         updated_commission);
  END LOOP;
END;
0 голосов
/ 04 февраля 2020

Как насчет этого? Я исправил только CASE, не смотрел на другие вещи, так как мы ничего не знаем о CUR_VAR - как он получает свою ценность, что COMMISION и т.д. c ..

DECLARE
  updated_commission float;
  cur_var a%rowtype;
BEGIN
  dbms_output.put_line('EMPLOYEE_NO     FNAME     LNAME     COMMISSION');
  dbms_output.put_line('-----------------------------------------------');
  WHILE cur_var%found AND COMMISSION IS NOT NULL
  LOOP
    updated_commision := commision * 
      case when branch_no = 100 then 1.10
           when branch_no = 101 then 1.15
           when branch_no = 104 then 1.20
      end;
  dbms_output.put_line(cur_var.EMPLOYEE_NO||'       '||cur_var.FNAME||'       '||cur_var.LNAME||'     
    '||cur_var.COMMISSION||'      '||cur_var.updated_commission);
  END LOOP;
END;
...