· Символьные литералы и литералы даты должны быть заключены в апострофы
· Числовые литералы могут быть представлены в простой (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).
Ссылка на скачивание - внизу страницы.