Ошибки 'PLS-00103' и 'ORA-06550'
У меня есть несколько блоков, которые я не могу запустить в 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
Он также выводит следующее:
Любая помощь приветствуется. Благодарю.
4 ответа
Я отмечаю "^"
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;
^
Не используйте одинарные кавычки (''), а также регистр не был определен правильно
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
У вас есть две опечатки в
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‘);
Вот один из способов сделать это - положить CASE
в DBMS_OUTPUT.PUT_LINE
вызов:
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>