LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

PL/SQL использует синтаксис Ады почти один в один. Они использовали готовый синтаксис.

Цикл это всегда LOOP...END LOOP; FORли,WHILEли,FOREACH` ли - дело десятое, факультативное и описательное приставкой к циклу. Тут даже ошибиться-то негде, всё очевидно.

Это работает только при условии, что в языке нет конструкции для цикла с пост-условием.

Если записывать цикл с пост-условием не как отдельную синтаксическую конструкцию, а как:

LOOP
   ...
   EXIT WHEN что-то;
END LOOP;

то да, проблемы нет.

Проблема «а как это всё цельно в синтаксисе представить» возникает, если мы хотим ввести туда цикл с пост-условием.

В таком случае тело цикла, очевидно, не может заканчиваться на END. Приходится искать подходящее ключевое слово, чтобы обозначить конец тела цикла.

Вот как эту задачу решили в Basic.

Исторически первым вариантом цикла был простой while, который заканчивался на end while:

https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/while-end-while-statement

Но затем придумали универсальный вариант, который покрывает 4 разных формы представления цикла:

https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/do-loop-statement

Исходная версия wandrien, :

PL/SQL использует синтаксис Ады почти один в один. Они использовали готовый синтаксис.

Цикл это всегда LOOP...END LOOP; FORли,WHILEли,FOREACH` ли - дело десятое, факультативное и описательное приставкой к циклу. Тут даже ошибиться-то негде, всё очевидно.

Это работает только при условии, что в языке нет конструкции для цикла с пост-условием.

Если записывать цикл с пост-условием не как отдельную синтаксическую конструкцию, а как:

LOOP
   ...
   EXIT WHEN что-то;
END LOOP

то да, проблемы нет.

Проблема «а как это всё цельно в синтаксисе представить» возникает, если мы хотим ввести туда цикл с пост-условием.

В таком случае тело цикла, очевидно, не может заканчиваться на END. Приходится искать подходящее ключевое слово, чтобы обозначить конец тела цикла.

Вот как эту задачу решили в Basic.

Исторически первым вариантом цикла был простой while, который заканчивался на end while:

https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/while-end-while-statement

Но затем придумали универсальный вариант, который покрывает 4 разных формы представления цикла:

https://learn.microsoft.com/en-us/dotnet/visual-basic/language-reference/statements/do-loop-statement