Ошибки 'PLS-00103' и 'ORA-06550' - PullRequest
       8

Ошибки 'PLS-00103' и 'ORA-06550'

0 голосов
/ 02 октября 2018

У меня есть несколько блоков, которые я не могу запустить в Oracle SQL Developer 18.2.0.183.Я не уверен, что мне что-то не хватает в моих блоках или мне нужно внести изменения в разработчика.Приведенный ниже блок выводит: «Ошибка запуска в строке: 1 в команде -.»(для объявления).

declare
total_purchases number(7,2);
begin
total_purchases :=20;
case
when (total_purchases>200) then dbms_output.put_line(‘high’);
when (total_purchases>100) and total_purchases<200) then dbms_output.put_line(‘mid);
when (total_purchases<100) then dbms_output.put_line(‘low’);
end case;
end

Он также выводит следующее:

enter image description here

Любая помощь приветствуется.Спасибо.

Ответы [ 4 ]

0 голосов
/ 02 октября 2018

Я отмечаю с помощью «^»

declare
  total_purchases number(7,2);
begin
  total_purchases :=20;
  case 
       when (total_purchases>200) then dbms_output.put_line('high');
       when ((total_purchases>100) and total_purchases<200) then dbms_output.put_line('mid');
            ^                                                                             ^
       when (total_purchases<100) then dbms_output.put_line('low');
  end case;
end;
   ^
0 голосов
/ 02 октября 2018

Не используйте одинарные кавычки (''), а также случай не был определен правильно

declare
total_purchases number(7,2);
begin
   total_purchases :=20;
   case
      when (total_purchases>200) then dbms_output.put_line('high');
      when (total_purchases>100) and total_purchases<200) then 
      dbms_output.put_line('mid');
      when (total_purchases<100) then dbms_output.put_line('low');
   end 
end
0 голосов
/ 02 октября 2018

Вот один из способов сделать это - поместить CASE в DBMS_OUTPUT.PUT_LINE call:

SQL> set serveroutput on
SQL> DECLARE
  2     total_purchases   NUMBER (7, 2);
  3  BEGIN
  4     total_purchases := 20;
  5     DBMS_OUTPUT.put_line (CASE
  6                              WHEN total_purchases > 200
  7                              THEN
  8                                 'high'
  9                              WHEN     total_purchases > 100
 10                                   AND total_purchases < 200
 11                              THEN
 12                                 'mid'
 13                              WHEN total_purchases < 100
 14                              THEN
 15                                 'low'
 16                           END);
 17  END;
 18  /
low

PL/SQL procedure successfully completed.

SQL>

Или, если вы используете свой синтаксис, сначала исправить ошибки (лишние скобки, пропущенная точка с запятой):

SQL> DECLARE
  2     total_purchases   NUMBER (7, 2);
  3  BEGIN
  4     total_purchases := 20;
  5
  6     CASE
  7        WHEN (total_purchases > 200)
  8        THEN
  9           DBMS_OUTPUT.put_line ('high');
 10        WHEN     (total_purchases > 100)
 11             AND total_purchases < 200
 12        THEN
 13           DBMS_OUTPUT.put_line ('mid');
 14        WHEN (total_purchases < 100)
 15        THEN
 16           DBMS_OUTPUT.put_line ('low');
 17     END CASE;
 18  END;
 19  /
low

PL/SQL procedure successfully completed.

SQL>
0 голосов
/ 02 октября 2018

У вас есть две опечатки в

when (total_purchases>100) and total_purchases<200) then dbms_output.put_line(‘mid);

Замените на

when (total_purchases>100 and total_purchases<200) then dbms_output.put_line(‘mid‘);
...