Шаг 40 - PL/SQL - дальше и дальше в пути

"хорошая сторона ошибки в том,
что вы узнаете ее когда совершите снова"
Марк Твен

Продолжаем PL/SQL! Итак, как известно, наилучший способ изучить язык программирования - это погрузиться в него с головой! То есть начать писать программы на том языке, который вы собственно хотите изучить. По этому, помаленьку приступим к изучению самого языка. В PL/SQL действует соглашение, что все символы приводятся к верхнему регистру по этому объявления типа:

	
a VARCHAR2(5);
A VARCHAR2(5);

Одинаковы! По этому, например, я взял сразу за правило все писать в верхнем регистре сразу, так меньше путаницы! Так же, естественно, запрещено использовать зарезервированные имена встроенных функций и пакетов! Каждый законченный оператор обрамляется символом ";". Вообще, если говорить прямо, например когда, я начал работать с PL/SQL, уже на первом этапе я четко увидел, что сам PL/SQL очень похож на язык Pascal. По этому, когда я со всем этим занимался, я как раз работал очень много на Pascal и для меня не было особых трудов привыкнуть к PL/SQL! Он мне дался довольно легко и без лишних усилий, что думаю получится и у вас! Итак, давайте разберемся для начала со всеми специальными символами, я думаю это будет полезно! Обычно разбор всех языков с этого и начинается!

Типы специальных символов PL/SQL:

  1. Арифметические операторы:

    +Сложение и унарный плюс
    -Вычитание и унарный минус
    *Умножение
    /Деление
    **Возведение в степень

  2. Операторы отношения (используются в логических выражениях):

    =Равенство
    <Меньше
    >Больше
    <>Не равно
    !=Не равно (альтернатива)
    ~=Не равно (альтернатива)
    ^=Не равно (альтернатива)
    <=Меньше или равно
    >=Больше или равно

  3. Выражение и списки (используются в операторах, объявлениях типов данных, объявлениях списков параметров, ссылках на переменные и таблицы):

    :=Присвоение
    (Начало списка или подвыражения
    )Конец списка или подвыражения
    ,Отдельные элементы списка (как в списке параметров)
    ..Оператор диапазона используется в операторах FOR-IN
    ||Конкатенация строк
    =>Ассоциация (используется в списке параметров)
    ;Конец выражения
    %Атрибут курсора или типа объекта
    .Спецификация объекта
    @Индикатор удаленной базы данных
    'Начало/конец строки символов
    :Индикатор внешней переменной
    &Индикатор связанной переменной

  4. Комментарии и метки

    --Комментарий в одной строке
    /*Начало многострочного комментария
    */Конец многострочного комментария
    >>Начало метки
    <<Конец метки

Самое интересное, нафига, такое количество способов, сказать не равно! Хотя != по моему вполне достаточно! Я например больше люблю вот так <>! :) Но вообще кому как нравится! Так же замечу, что вложенные комментарии не допускаются! Проще использовать /* */ как в языке C! А теперь про самое интересное - блоки PL/SQL.

Блоки PL/SQL, могут быть, как я уже говорил "именованными" и "не именованными". Блок PL/SQL является фундаментальной программной конструкцией! Программирование модулями позволяет разрабатывать легко читаемый код и программировать сверху вниз. Неименованный блок PL/SQL, имеет три раздела - Declaration (объявления), Body (тело) и, как правило, Exception (исключения).

Стандартная конструкция неименованного блока:

 	
DECLARE
	-- объявления

BEGIN
	-- выполняемый код

EXCEPTION
	-- обработка исключений

END;

/ -- символ завершения для запуска блока на компиляцию

Итак, запускаем блокнот и SQL*Plus, пришло время написать и запустить вечную мантру программистов - правильно!!! "Hello World!". Итак, код реализующий данную вечную и незыблемую мантру таков:

 
SET SERVEROUTPUT ON
BEGIN
DBMS_OUTPUT.enable;
DBMS_OUTPUT.put_line('Hello World!!!');
END;
/

Получаем после компиляции:

 
SQL> SET SERVEROUTPUT ON
SQL> BEGIN
  2  DBMS_OUTPUT.enable;
  3  DBMS_OUTPUT.put_line('Hello World!!!');
  4  END;
  5  /
Hello World!!!

PL/SQL procedure successfully completed

УРА!!! Получилось!!! А вот теперь немного, почесав затылок, попробуем разобраться, что же здесь для чего? Итак строка SET SERVEROUTPUT ON заставляет, сервер выводить сообщения как бы на "экран" или консоль. Что-то в этом духе (эту строку нужно вводить один раз на сеанс, при последующих запусках, ее можно не использовать!). Хотя, если правильно, то выводит пакет DBMS_OUTPUT, а первая строка просто заставляет сервер показывать то, что выводит пакет DBMS_OUTPUT с помощью метода put_line(), то есть показывать то, что возвращает сервер. BEGIN END - это обрамляющий программный блок. Пункт DECLARE отсутствует, в следствии того что, нам пока ничего не нужно декларировать! Но в дальнейшем он нам понадобиться! "/" - символ запускающий код на исполнение. Строка "PL/SQL procedure successfully completed" просто говорит, что блок выполнился успешно. Вот собственно и все!!!

Можете написать, что ни будь свое и попробовать, что получиться! Еще раз проштудируйте специальные символы, так как далее мы будем ими часто пользоваться!


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Летучий Сергей - 13.10.2003