Сегодня будет опубликована вторая статья по теме
языка PL/SQL (и очередная – в моем двухнедельном марафоне о программировании).
Сегодня я предлагаю поговорить о двух операторах данного языка, которые
(иногда) очень и очень полезны. Это – оператор GoTo и оператор NULL. Для начала
расскажу о них в общих чертах, а потом – более подробно.
В программировании на языке PL/SQL операторы GoTo и
NULL не играют такой важной роли, как рассмотренные нами ранее операторы FOR и
LOOP. А оператор GoTo требуется не часто. Но иногда использование оператора
GoTo может сильно упростить программу – тогда его можно применять. А оператор
NULL необходим для упрощения и улучшения читаемости условных операторов в
циклах.
Но слишком частое использование оператора GoTo
вредит программе. Если это возможно – не используйте этот оператор там, где его
можно заменить на другой (более подходящий по смыслу). А вообще – я бы
порекомендовал отказаться вообще от использования данного оператора (лично я
еще ни разу его в PL/SQL не использовал).
GoTo:
Оператор GoTo осуществляет
безусловный переход к метке. Метка (название) должно быть уникально для своей
области действия. Сразу после мети должен стоят находиться выполняемый
оператор, либо – исполняемый блок кода на языке PL/SQL. Оператор или блок кода
могут находится и ниже и выше вызвавшего их кода. Для примера очень простой код
приведу:
DECLARE
vS NUMBER;
BEGIN
FOR vS IN 1 .. 5
LOOP
dbms_output.put_line('Еще рано, vS = '||
TO_CHAR(vS));
IF vS = 3 THEN
GOTO
METKA;
END IF;
END LOOP;
<<METKA >>
dbms_output.put_line('А вот теперь переход был
произведен');
END;
NULL:
Оператор NULL не выполняет
никаких действий, кроме как передает выполнение следующей (за собой)
инструкции. В некоторых других языках данная инструкция называется No-Op (No
Operation), например – в ассемблере используется аналогичная инструкция,
которая называется NOP (тоже ничего не выполняет, но – зато заполняет
пространство кода).
Как уже было сказано –
оператор NULL необходим для улучшения понятности некоторых условных циклов (IF
и так далее). Тоже простой пример:
DECLARE
vS NUMBER := 4;
BEGIN
IF vS = 4 THEN
dbms_output.put_line('vS = '||TO_CHAR(vS));
ELSE
NULL;
END IF;
END;
Сразу понятно, что в блоке
ELSE ничего не выполняется (а то иногда бывает непонятно, где блог ELSE, либо –
что в нем выполняется).
Вот такие два простых оператора. GoTo я, как уже
говорил – не использую. А вот NULL – я использую чуть ли не в каждой из
программ.
Комментариев нет:
Отправить комментарий