· Символьные литералы и литералы даты должны быть заключены в апострофы
· Числовые литералы могут быть представлены в простой (12.3) или научной (1.23E1) записи
· В тексте программного блока могут присутствовать комментарии:
o многострочные – несколько строк между /* и */
o однострочные – одна строка после -- и до конца строки
Блок PL/SQL может содержать до трех секций, каждая из которых начинается с определенного ключевого слова (DECLARE – декларативная секция, BEGIN – выполняемая секция, EXCEPTION – секция обработки исключений). Заканчивается блок ключевым словом END, после которого обязательно должна следовать точка с запятой. После ключевых слов, разделяющих секции блока, точка с запятой не ставится. Обязательными ключевыми словами являются BEGIN и END.
DECLARE
...
BEGIN
...
EXCEPTION
...
END;
Идентификатор – это лексемы, представляющие элементы программирования, такие как переменные, константы, пользовательские типы данных, курсоры, исключения. Имя идентификатора должно начинаться с буквы и содержать не более 30 символов (букв, цифр, символов подчеркивания (_), доллара ($) или фунта (#)).
Прежде, чем использовать идентификаторы в блоке PL/SQL, их надо объявить.
идентификатор [CONSTANT] тип_данных [NOT NULL] [{:= | DEFAULT} выражение];
идентификатор – имя идентификатора
CONSTANT – объявляет идентификатор константой. Значение идентификатора нельзя изменять, поэтому необходимо инициализировать
тип_данных – тип данных (может быть скалярный или составной)
NOT NULL – идентификатор должен содержать значение, поэтому его необходимо инициализировать
выражение – любое выражение PL/SQL (литерал, другая переменная или выражение), используемое для инициализации идентификатора. Для присваивания значения идентификатору можно использовать оператор := или зарезервированное слово DEFAULT
Рекомендуется объявлять по одному идентификатору в строке, хотя можно объявить сразу несколько идентификаторов. Объявление каждого идентификатора обязательно должно заканчиваться точкой с запятой.
Пример анонимного блока PL/SQL, в котором объявлены три идентификатора. В выполняемой секции блока не выполняется никаких действий, поэтому указано ключевое слово NULL.
SQL> DECLARE
2 var1 CHAR(3);
3 var2 CONSTANT DATE := SYSDATE;
4 var3 NUMBER NOT NULL := 123;
5 BEGIN
6 NULL;
7 END;
8 /
PL/SQL procedure successfully completed.
При попытке объявить идентификатор-константу, не инициализировав его при объявлении, возникает ошибка.
SQL> DECLARE
2 var1 CHAR(3);
3 var2 CONSTANT DATE;
4 BEGIN
5 NULL;
6 END;
7 /
DECLARE
*
ERROR at line 1:
ORA-06550: line 3, column 1:
PLS-00322: declaration of a constant 'VAR2' must contain an initialization assignment
ORA-06550: line 3, column 6:
PL/SQL: Item ignored
Для объявления переменных, констант и указателей можно использовать два типа данных:
§ Скалярные, которые допускают только одно значение переменной в определенный момент времени и не имеют внутренних компонент
§ Составные, которые могут содержать несколько значений одного типа одновременно и имеют внутренние компоненты
Скалярные типы данных можно разделить на четыре категории: числовые типы, символьные, тип даты и времени, и логический тип. Числовой и символьный типы имеют подтипы.
| Тип | Подтип | Описание | Ограничение значений | 
| CHAR(s) | CHARACTER | Символьные строки фиксированной длины | От 0 до 32767 байт. По умолчанию 1. | 
| STRING | |||
| ROWID | |||
| NCHAR | |||
| VARCHAR2(s) | VARCHAR | Символьные строки переменной длины | От 0 до 32767 байт. По умолчанию 1. | 
| NVARCHAR2#1 | |||
| NUMBER(p, s) | DEC | Числа с фиксированной точкой: p – общее число значащих цифр s - масштаб | Общее число значащих цифр – от 1 до 38 (по умолчанию – максимальное число, поддерживаемое системой). Для REAL – от 1 до 18 Масштаб – от –84 до 127 (по умолчанию 0) | 
| DECIMAL | |||
| NUMERIC | |||
| DOUBLE PRECISION | Числа с плавающей точкой: p – общее число значащих цифр s - масштаб | ||
| REAL | |||
| NUMBER(p) | FLOAT | ||
| INTEGER | Целые числа: p – общее число значащих цифр | ||
| INT | |||
| SMALLINT | |||
| BINARY_INTEGER (±2 147 483 647) | NATURAL | Неотрицательное целое | От 0 до 2 147 483 647 | 
| NATURALN | Неотрицательное целое, определенное как NOT NULL | ||
| POSITIVE | Положительное целое | От 1 до 2 147 483 647 | |
| POSITIVEN | Положительное целое, определенное как NOT NULL | ||
| SIGNTYPE | Предназначен для трехзначной логики | -1; 0; 1 | |
| LONG | Строки символов переменной длины | От 0 до 32760 байт | |
| RAW(s) | LONG RAW | Неинтерпретируемые двоичные данные | От 0 до 32760 байт | 
| LOB | BFILE | Внешние двоичные данные | От 0 до 4 гигабайт | 
| BLOB | Внешние или внутренние двоичные данные | ||
| CLOB | Внешние или внутренние односимвольные данные | ||
| NCLOB | Внешние или внутренние многосимвольные данные | ||
| DATE | Внутреннее представление даты | От 1 января 4712 года до н.э. до 31 декабря 4712 года н.э. | |
| BOOLEAN | Логические значения | TRUE, FALSE, NULL | 
Если Вы используете переменную для хранения значения столбца, Вы должны следить, чтобы тип данных этой переменной соответствовал типу данных столбца. Чтобы не заботиться о соответствии типов данных столбца таблицы базы данных и переменной PL/SQL, можно объявить переменную на основе столбца базы данных или на основе ранее заданной переменной.
Для объявления типа данных на основе столбца или другой переменной используется атрибут %TYPE:
· имя_таблицы.имя_столбца%TYPE – для столбца базы данных
· имя_переменной%TYPE – для ранее объявленной переменной
PL/SQL определяет тип данных и размер такой переменной во время компиляции блока, поэтому тип и точность переменной всегда совместимы с типом данных и размером столбца. Ограничение NOT NULL столбца не распространяется на переменные, объявленные с помощью атрибута %TYPE.
SQL> DECLARE
2 var1 emp.ename%TYPE;
3 var2 var1%TYPE;
4 BEGIN
5 NULL;
6 END;
7 /
PL/SQL procedure successfully completed.
В PL/SQL имеется два составных типа данных:
· TABLE (таблица PL/SQL)
o Таблица PL/SQL подобна одномерному массиву и содержит два компонента (Рисунок 2):
§ Первичный ключ BINARY_INTEGER, по которому индексируется таблица
§ Столбец данных скалярного типа
o Таблица PL/SQL не ограничена, поэтому может динамически расти
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.