Разработка программ с использованием языка 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 условие.
