Что вы сделали - отредактировав вопрос и добавив изображение вместо кода - было неправильно. Не все видят изображения. Вы бы предпочли отправить код.
В любом случае: вот что пошло не так с вашим кодом.
Используйте help , если вы не уверены, что делать. accept
использует char
, а не varchar2
и не имеет размера.
SQL> help accept
ACCEPT
------
Reads a line of input and stores it in a given substitution variable.
ACC[EPT] variable [NUM[BER] | CHAR | DATE | BINARY_FLOAT | BINARY_DOUBLE]
[FOR[MAT] format] [DEF[AULT] default] [PROMPT text | NOPR[OMPT]] [HIDE]
В коде, который вы написали: в строке № 3 пропущены одинарные кавычки. В остальном все в порядке (конечно, после включения вывода).
SQL> set serveroutput on
SQL>
SQL> ACCEPT designation char PROMPT 'enter designation: ' ;
enter designation: lead
SQL> DECLARE
2 v_salary_inc number;
3 v_desg varchar2(20) := '&designation';
4 BEGIN
5 v_salary_inc := case v_desg
6 when 'manager' then .3
7 when 'lead' then .18
8 when 'senior engg' then .1
9 else .05
10 end;
11 dbms_output.put_line('your salary increase is :' || v_salary_inc);
12 END;
13 /
your salary increase is :,18
PL/SQL procedure successfully completed.
SQL>