
Разработка программ с использованием языка PL/SQL
Блок программы
DECLARE
Операторы объявления
BEGIN
Операторы исполнения
EXEPTION
Операторы обработки исключительных ситуаций
END;
«- -» комментарии
Переменные объявляются после ключевого слова DECLARE
ИМЯ [CONSTANT] ТИП [:=значение];
Длина имени переменной ограничена 30 символами.
Типы данных ORACLE.
Тип |
Диапазон представления |
BINARY_INTEGER |
-2 147 483 648 +2 147 483 647 |
NATURAL |
0 +2 147 483 647 |
POSITIVE |
1 +2 147 483 647 |
NUMBER |
±1.0E-129 ± 9.99E125 |
DEC |
=/= |
DECIMAL |
=/= |
DOUBLE_PRECISION |
=/= |
FLOAT |
=/= |
INT |
=/= |
INTEGER |
=/= |
REAL |
=/= |
SMALLINT |
=/= |
CHAR |
Строка до 32767 символов ASCII |
CHARACTER |
=/= |
STRING |
=/= |
VARCHAR |
Строка переменной длины до 32767 символов ASCII |
VARCHAR2 |
=/= |
LONG |
Строка до 2 147 483 647 символов ASCII |
RAW |
Двоичные данные до 32767 байт |
LONG RAW |
Двоичные данные до 2 147 483 647 байт |
BOOLEAN |
TRUE или FALSE |
DATE |
От 1 января 14712 до н.э. до 31 декабря 314712 н.э. |
ROWIND |
18 байт в формате ВВВВВВВВ.RRRR.FFFF |
Объявления переменной с типом атрибута таблицы
A2 T1.P1%TYPE
где - Т1 - имя таблицы, Р1 – имя поля (атрибута) таблицы.
Объявления переменной для строки таблицы
A3 T1%ROWTYPE
Записи
Записи объявляются за два шага: сначала объявляется тип записи, а затем переменная этого типа.
TYPE имя_типа IS RECORD (имя_поля тип, имя_поля тип …) ;
имя_переменной имя_типа ;
Массивы
TYPE имя IS TABLE OF тип_столбца INDEX BY BINARY_INTEGER;
Имя переменной имя_типа_таблицы
обращение Имя_таблицы (значение ключа).
MAS (2);
курсоры
CURSOR имя IS тело запроса;
Переменные для генерации исключительных ситуаций
Имя EXCEPTION;
Функции преобразование типов данных
Таблица 2
Исходный Тип |
Тип результата | ||||
CHAR |
DATE |
NUMBER |
RAW |
ROWIND | |
CHAR |
|
TO_DATE |
TO_NUMBER |
HEXTORAW |
CHARTOROWIND |
DATE |
TO_CHAR |
|
|
|
|
NUMBER |
TO_CHAR |
TO_DATE |
|
|
|
RAW |
RAWTOHEX |
|
|
|
|
ROWIND |
ROWIND TOCHAR |
|
|
|
|
TO_CHAR (x {NUMBER | DATE} [,f VARCHAR2 [,n]]);
TO_NUMBER(x {CHAR | VARCHAR2] [,f VARCHAR2 [,n]]);
TO_DATE(x {CHAR | VARCHAR2] [,f VARCHAR2 [,n]]);
где х – имя переменной соответствующего типа; f – форматная строка преобразования
Элемент |
Формат |
Описание |
Год |
YYYY,YY |
Год цифрами, четыре или две цифры |
|
YEAR |
Год прописью |
Месяц |
MM |
Две цифры месяца |
|
RM |
Римское обозначение месяца |
|
MONTH |
Название месяца прописью |
|
MON |
Краткое имя месяца |
День |
DDD |
Номер дня в году |
|
DD |
Номер дня в месяце |
|
D |
Номер дня в неделе |
|
DAY |
Название дня |
|
DY |
Краткое название дня |
Час |
HH12,HH24 |
Часы в 12 – или 24 часовом варианте |
Минуты |
MI |
Минуты |
Секунды |
SSSS,SS |
Секунды, четыре или две цифры |
Формат для преобразования строки символов в число или числа в строку символов имеет вид:
Элемент |
Описание |
9 |
Значащая цифра |
0 |
Ведущий ноль |
$ |
Ведущий символ $ |
B |
Ведущий символ пробел |
MI |
Знак минуса в конце |
S |
Ведущий знак числа ( +, -) |
, |
Знак запятой |
. |
Знак точки |
V |
Умножение на степень 10 |
EEE |
Научный формат |
RN |
Римское счисление |
IF условие THEN Тело ; ELSE Тело ; END IF;
|
IF условие THEN Тело; ELSIF условие THEN Тело ; ELSE Тело; END IF; | ||
LOOP Тело END LOOP; |
When Условие LOOP Тело END LOOP; |
FOR счетчик IN [REVERSE] От .. До LOOP Тело END LOOP; |
Выход из цикла EXIT или EXIT WHEN условие.