Попробовать бесплатно

Конвертация 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
pg_goto_1 pg_goto_2

Результат:

Microsoft SQL Server PostgreSQL
pg_goto_3 pg_goto_4

Если у вас есть другие вопросы, пожалуйста, свяжитесь с нами: support@convertum.ru