- •2. Пользовательские и системные функции языка, выражения, идентификаторы, ключевые слова
- •2.1 Специальные символы pl/sql
- •2.2 Блоки pl/sql
- •2.3 Переменные и типы данных
- •2.4 Операторы условного перехода
- •2.5 Циклы и операторы безусловного перехода
- •2.6 Встроенные функции языка pl/sql
- •Initcap(строка)
- •Instr(строка 1, строка 2, [,a[,b]])
- •3. Работа с данными. Dml & pl/sql
2.2 Блоки pl/sql
Блоки PL/SQL, могут быть "именованными" и "не именованными". Блок PL/SQL является фундаментальной программной конструкцией! Программирование модулями позволяет разрабатывать легко читаемый код и программировать сверху вниз. Неименованный блок PL/SQL, имеет три раздела - Declaration (объявления), Body (тело) и, как правило, Exception (исключения).
Стандартная конструкция неименованного блока:
DECLARE
-- объявления
BEGIN
-- выполняемый код
EXCEPTION
-- обработка исключений
END;
/ -- символ завершения для запуска блока на компиляцию
Если есть желание написать и запустить вечную мантру программистов "Hello World!", то код ее реализующий таков:
BEGIN
DBMS_OUTPUT.put_line('Hello World!!!');
END;
/
BEGIN END - это обрамляющий программный блок. Пункт DECLARE отсутствует, в следствии того что, нам пока ничего не нужно декларировать! Но в дальнейшем он нам понадобиться! DBMS_OUTPUT.put_line вывод строки на экран. "/" - символ запускающий код на исполнение.
Вообще говоря, от таких программ как “Hello world” толку не сильно много. Попробуем написать что-нибудь более интересное и полезное.
2.3 Переменные и типы данных
Как и в любом другом уважающем себя языке программирования в PL/SQL имеется возможность объявлять переменные, инициализировать их при объявлении и т.д.
В PL/SQL существуют следующие (наиболее используемые) типы данных:
Строковые
CHAR
VARCHAR2
Числовые
NUMBER
INTEGER
REAL
Датные
DATE
TIMESTAMP
Дополнительные
BLOB
CLOB
BOOLEAN
Для строковых типов может быть задан максимальный размер строки, хранящейся в переменной. Отличие типов char и varchar2 в том, что первый хранит значение дополненное справа пробелами, до длины указанной при объявлении переменной, второй же просто хранит значимые символы строки, экономя таким образом место в памяти.
Для типа NUMBER может быть указана точность, с которой он хранит числовые значения. Типы INTEGER и REAL являются его подтипами, хранящими соответственно целые и действительные числа.
Для хранения даты и времени есть типы DATE и TIMESTAMP. Первый просто хранит дату, второй способен содержать в себе дату и время с точностью до миллисекунд.
Существуют также два типа для хранения больших объектов, таких как картинки или большой текст. Тип BLOB – это средство для хранения любых бинарных объектов, CLOB – специализированный тип для хранения больших объемов текста.
Тип BOOLEAN предназначен для хранения логических значений. Может содержать только значения “истина” или “ложь”.
Типичное объявление переменной выглядит следующим образом:
DECLARE
A INTEGER := 3; -- проинициализированная переменная
B INTEGER; -- простая переменная
C NUMBER(5,2):=12.43;-- переменная с точностью 5 знаков,2после запятой
K VARCHAR2(20) := 'lalala'; -- инициализированная строковая переменная
P VARCHAR2(20); -- строковая переменная длиной 20 символов
D CONSTANT REAL := 0.45; -- дробная константа
BEGIN
…
END;
