Конвертация GOTO в PostgreSQL
PostgreSQL не поддерживает оператор GOTO, поэтому при переходе с Microsoft SQL Server (или других баз данных, где этот оператор есть) в PostgreSQL потребуется значительная переработка кода. Чтобы эмулировать оператор GOTO в PostgreSQL, можно использовать операторы LOOP и CASE. Давайте рассмотрим, как это сделать:
- Создайте вспомогательную метку SWL_Label и оберните в нее весь код процедуры, не включая операторы после меток.
- Создайте дополнительную переменную SWV_Label_value и инициализируйте ее значением "SWL_Start_Label". Таким образом, переменная SWV_Label_value будет иметь значение "SWL_Start_Label" до первого GOTO.
- Когда необходимо выполнить GOTO, измените значение этой переменной на имя метки из оператора GOTO и перейдите к следующей итерации SWL_Label.
- Если к концу процедуры значение SWV_Label_value не изменится, значит, оператор GOTO не был выполнен.
- После этого сгенерируйте дополнительный оператор CASE для проверки каждого значения SWV_Label_value и выполнения соответствующего кода из указанной метки.
Пример:
| Microsoft SQL Server | PostgreSQL |
|---|---|
![]() |
![]() |
Результат:
| Microsoft SQL Server | PostgreSQL |
|---|---|
![]() |
![]() |
Если у вас есть другие вопросы, пожалуйста, свяжитесь с нами: support@convertum.ru



