Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенные CASE / 6 сообщений из 6, страница 1 из 1
12.10.2020, 06:27
    #40007543
Валерка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
работаю в dbforge.
Имеется конструкция типа
Case переменная1
when значение11 then
чтото делаю;
when значение12 then
case переменная2
when значение21 then чтото делаю;
when значение22 then чтото делаю;
end case;
when значение13 then
чтото делаю;
end case;

на строке
when значение13 then
система дает ошибку:
1 PLS-00103: Встретился символ "WHEN" в то время как ожидалось одно из следующих:

( begin case declare end exit for goto if loop mod null
pragma raise return select update while with <идентификатор>
<идентификатор с двойными кавычками-разделителями>
<переменная привязки> << continue close current delete fetch
lock insert open rollback savepoint set sql execute commit
forall merge pipe purge
Символ "case" заменен на "WHEN", чтобы можно было продолжать.

такое впечатление что внутренний end case закрыл и внешний case тоже. Везде приводятся примеры "Вложенные команды CASE", но нет нигде "Вложенные выражения CASE". Может "Вложенные выражения CASE" просто не работают??
...
Рейтинг: 0 / 0
12.10.2020, 06:42
    #40007546
booby
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
Валерка,

закрыл, но не end а ;
...
Рейтинг: 0 / 0
12.10.2020, 06:48
    #40007547
Правильный Вася
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
Валерка, где ты увидел в синтаксисе END CASE ?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT 
      CASE ISEQ$$_72894.NEXTVAL
           WHEN 1 THEN '1'
           WHEN 2 THEN
                CASE ISEQ$$_73059.NEXTVAL
                     WHEN 1 THEN '21'
                     WHEN 2 THEN '22'
                END
           WHEN 3 THEN '3'
           ELSE 'nothing'
       END AS "some number"
FROM dual;
...
Рейтинг: 0 / 0
13.10.2020, 06:23
    #40007926
Валерка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
Правильный Вася, смотрел на разных сайтах. Гдето END, гдето END CASE.
Вот тут https://oracleplsql.ru/case.html например так
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2

WHEN condition_n THEN result_n

ELSE result

END


А вот тут https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/04_struc.htm
авторCASE grade
WHEN 'A' THEN dbms_output.put_line('Excellent');
WHEN 'B' THEN dbms_output.put_line('Very Good');
WHEN 'C' THEN dbms_output.put_line('Good');
WHEN 'D' THEN dbms_output.put_line('Fair');
WHEN 'F' THEN dbms_output.put_line('Poor');
ELSE dbms_output.put_line('No such grade');
END CASE;


dbforge в подсказке дает END CASE

"Верить нельзя никому. Порой даже себе" (С)
...
Рейтинг: 0 / 0
13.10.2020, 06:27
    #40007927
Валерка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
booby
Валерка,

закрыл, но не end а ;


то есть внутренний end case без ";" надо?

слегка переписал процедуру, обошелся совсем без кейзов..
...
Рейтинг: 0 / 0
13.10.2020, 07:32
    #40007936
Вячеслав Любомудров
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вложенные CASE
Валерка
Правильный Вася, смотрел на разных сайтах. Гдето END, гдето END CASE.
Вот тут https://oracleplsql.ru/case.html например так
CASE [ expression ]
WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2

WHEN condition_n THEN result_n

ELSE result

END


А вот тут https://docs.oracle.com/cd/A97630_01/appdev.920/a96624/04_struc.htm
авторCASE grade
WHEN 'A' THEN dbms_output.put_line('Excellent');
WHEN 'B' THEN dbms_output.put_line('Very Good');
WHEN 'C' THEN dbms_output.put_line('Good');
WHEN 'D' THEN dbms_output.put_line('Fair');
WHEN 'F' THEN dbms_output.put_line('Poor');
ELSE dbms_output.put_line('No such grade');
END CASE;


dbforge в подсказке дает END CASE

"Верить нельзя никому. Порой даже себе" (С)Надо просто понять разницу между CASE Expressions и CASE Statement
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вложенные CASE / 6 сообщений из 6, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]