Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Совершенствование приложений Oracle Forms

Покупка
Новинка
Артикул: 835237.01.99
Доступ онлайн
1 000 ₽
В корзину
Курс расширяет для разработчика возможности Oracle Forms, позволяя создавать многомодульные приложения, встраивать в приложения отчеты, меню, библиотеки и программные единицы. В курсе подробно рассматривается язык PL/SQL, создание различных программных единиц на его основе и их применение для обработки событий и использования встроенных возможностей Forms Builder. Слушатель научится создавать приложения, взаимодействующие с Microsoft Office, а также интегрировать различные приложения в форму, такие как Adobe Acrobat, Windows Media Player, Explorer и др.
Сергеенко, С. В. Совершенствование приложений Oracle Forms : краткий курс / С. В. Сергеенко. - Москва : ИНТУИТ, 2016. - 239 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2157916 (дата обращения: 08.09.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Совершенствование приложений Oracle Forms

2-е издание, исправленное

Сергеенко С.В.

Национальный Открытый Университет “ИНТУИТ”
2016

2

Совершенствование приложений Oracle Forms/ С.В. Сергеенко - М.: Национальный Открытый
Университет “ИНТУИТ”, 2016

Курс расширяет для разработчика возможности Oracle Forms, позволяя создавать многомодульные
приложения, встраивать в приложения отчеты, меню, библиотеки и программные единицы.
В курсе подробно рассматривается язык PL/SQL, создание различных программных единиц на его
основе и их применение для обработки событий и использования встроенных возможностей Forms
Builder. Слушатель научится создавать приложения, взаимодействующие с Microsoft Office, а также
интегрировать различные приложения в форму, такие как Adobe Acrobat, Windows Media Player,
Explorer и др.

(c) ООО “ИНТУИТ.РУ”, 2009-2016
(c) Сергеенко С.В., 2009-2016

3

PL/SQL в Oracle Forms. Блоки и переменные PL/SQL

В этой лекции слушатель ознакомится с декларативной средой PL/SQL и ее
возможностями, научится создавать блоки и переменные PL/SQL.

PL/SQL - это язык программирования, объединяющий в себе возможности
процедурных языков и SQL. Иначе говоря, он представляет собой процедурное
расширение языка SQL, отсюда и название - Procedural Language SQL. PL/SQL
является родным языком Oracle, так как он интегрирован с сервером базы данных и его
код выполняется непосредственно сервером, поэтому программы, написанные на
PL/SQL, работают быстро и эффективно. Возможность использовать SQL в блоках
PL/SQL - одна из важнейших его характеристик. PL/SQL применяется для доступа к
базам данных Oracle из различных сред разработки, одной из которой является Oracle
Forms. В этой главе мы ознакомимся с декларативной средой PL/SQL и ее
возможностями, научимся создавать блоки и переменные PL/SQL.

Блоки PL/SQL

PL/SQL, как и любой другой процедурный язык программирования, состоит из
логически связанных элементов, объединенных в программные единицы, которые
называются блоками. Каждый модуль PL/SQL состоит как минимум из одного блока.
Блоки PL/SQL могут содержать любое количество подблоков, то есть иметь различный
уровень вложенности. Блок как структурная единица логически связанных элементов
определяет область их действия, делает код читабельным и простым для понимания. В
PL/SQL различают два типа блока:

анонимные блоки;
именованные блоки.

Анонимные блоки

Анонимные блоки - это блоки, которые не имеют имени. Анонимные блоки не могут
быть вызваны другими блоками, так как у них нет имени, на которое можно ссылаться.

Триггеры Oracle Forms и Reports, которые также называются клиентскими триггерами,
являются анонимными блоками PL/SQL. Триггеры базы данных и сценарии в
SQL*Plus, заключенные в операторские скобки BEGIN и END, также являются
анонимными блоками. Ниже приведена структура анонимного блока:

DECLARE
<имя переменной > <тип данных><(значение)>;
BEGIN
< исполняемый оператор>;
EXCEPTION
< оператор обработки исключения >;

4

END;

DECLARE - раздел объявлений. В этом разделе идентифицируются переменные,
курсоры и вложенные блоки, на которые имеются ссылки в исполняемом блоке и
блоке исключений. Этот раздел необязательный.

BEGIN - END - исполняемый раздел. В этом разделе находятся операторы, которые
выполняются ядром PL/SQL во время работы вашего приложения. Этот раздел
является обязательным.

EXCEPTION - раздел исключений. В этом разделе обрабатываются различные
исключения, предупреждения и ошибки. Этот раздел необязателен.

Из всех ключевых слов в представленной структуре для анонимного блока ключевые
слова BEGIN и END являются обязательными, и между ними должен быть как минимум
один исполняемый оператор:

BEGIN 
Null; 
END;

Несмотря на то что ключевые слова BEGIN и END обязательны, в Oracle Forms их
можно опустить. Так, к примеру, простейший анонимный блок имеет вид:

BEGIN
Message ('Hello!');
END;

В Oracle Forms этот анонимный блок можно записать и без ключевых слов BEGIN и

END:

Message ('Hello!');

Рассмотрим различные виды анонимных блоков.

1. Блок с разделом объявлений и исключений:

DECLARE
<имя переменной > <тип данных><(значение)>;
BEGIN
<   исполняемый оператор>;
EXCEPTION
<   оператор обработки исключения >;
END;

Пример:

BEGIN
NULL; 
EXCEPTION

5


 WHEN OTHERS THEN NULL; 
END;

2. Вложенный блок - это такой вид блока, когда один блок объявляется в

исполняемом разделе другого. В большинстве случаев вложенный блок создается
с целью размещения в нем раздела EXCEPTION для обработки исключений. Это
очень удобно, так как в случае возникновения исключения программа не
завершается с ошибкой, а продолжает функционировать, обработав ошибку. Ниже
приведен пример вложенного блока:

Синтаксис:

BEGIN
< исполняемый оператор >; 
BEGIN
< исполняемый оператор >; 
EXCEPTION
< оператор обработки исключения >; 
END;
EXCEPTION
< оператор обработки исключения >; 
END;

Практический пример:

BEGIN 
 NULL; 
 BEGIN
  NULL; 
 EXCEPTION
  WHEN OTHERS THEN NULL; 
 END; 
NULL; 
EXCEPTION
 WHEN OTHERS THEN NULL; 
END;

3. Вложенный анонимный блок с разделом объявлений и исключений:

Синтаксис:

DECLARE
<имя переменной > <тип данных><(значение)>;
BEGIN
< исполняемый оператор >; 
BEGIN
< исполняемый оператор >;
EXCEPTION

6

< оператор обработки исключения >;
END; 
EXCEPTION
< оператор обработки исключения >; 
END;

Практический пример:

DECLARE
 x NUMBER(4); 
BEGIN
 x := 1000; 
 BEGIN
  x := x + 100; 
 EXCEPTION
  WHEN OTHERS THEN x := x + 2; 
 END;
  x := x + 10; 
  DBMS_OUTPUT.PUT_LINE(x); 
EXCEPTION
 WHEN OTHERS THEN 
  x := x + 3; 
END;

Когда вы связываете код PL/SQL с триггером или полем, пользуясь таким
инструментальным средством, как Forms Builder, этот код составляет анонимный блок
PL/SQL. При этом можно создать полный блок с объявлениями, исполняемыми
операторами и разделом обработки исключений или же ограничиться только
исполняемыми операторами.

Именованные блоки

Именованные блоки - это блоки, которые имеют имя, например, функция или
процедура. Несмотря на то что анонимные блоки используются часто, каждый
разработчик пытается оформить свою PL/SQL-программу как именованный блок.
Преимущество именованного блока в том, что у него есть имя и на него можно
ссылаться из других блоков. Если считать главным отличием между анонимным
блоком и именованным отсутствие имени у первого, то тогда в Forms понятие
анонимного блока очень размыто. В Oracle Forms, несмотря на то что
пользовательский

триггер будет считаться анонимным блоком, его все же можно вызвать и на него
можно ссылаться. Ниже приведен пример именованного блока функции и процедуры:

PROCEDURE [схема.] имя [(параметр [, параметр ...])]
   [AUID {DEFINER | CURRENT_USER}] 
FUNCTION [схема.] имя [(параметр [, параметр ...])]

7

   RETURN тип_возвращаемых_данных
   [AUID {DEFINER | CURRENT_USER}]
   [DETERMINISTIC]
   [PARALLEL ENABLE ...]
   [PIPELINED]

Заголовок функции отличается от заголовка процедуры лишь ключевым словом

RETURN.

Именованные блоки, так же как и анонимные, могут быть вложенными, причем
анонимный блок может быть вложен в именованный блок. Ниже приведен пример
такого блока:

PROCEDURE calc_totals 
IS
 year_total NUMBER; 
BEGIN
 year_total := 0;
 
 /* Начало вложенного блока */ 
 DECLARE
  month_total NUMBER; 
 BEGIN
  month_total := year_total / 12; 
 END set_month_total; 
 /* Конец вложенного блока */ 
END;

В этом разделе мы ознакомились с понятием блока в PL/SQL, научились определять
типы блоков и их структуру. Остается лишь сделать вывод из всего
вышеперечисленного: PL/SQL предоставляет разработчику возможность писать
удобочитаемый и гибкий код, подходить к написанию программы как к творческому
процессу, требующему нестандартного мышления.

Переменные PL/SQL

Традиционно в программировании принято считать, что переменная - это именованная
ячейка памяти, имя которой используется для доступа к данным. Можно сказать
просто, что переменная - это обозначение, заменяющее какое-либо значение, будь то
число, массив, строка или еще какой-нибудь тип. Переменные используются для
следующих целей:

Временное хранение данных.
Манипуляция хранимыми значениями.
Возможность многократного использования.
Простота обслуживания.
Повышение читаемости программы.

8

С понятием переменная чаще всего связываются такие понятия, как область видимости
переменной, идентификаторы, ее тип и имя.

Типы переменных PL/SQL

PL/SQL, как и любой другой язык программирования, оперирует различными типами
данных (табл. 15.1). Переменные PL/SQL:

Скалярные (Scalar) - скалярные типы данных содержат одно значение. К
скалярным типам данных относятся все основные типы данных сервера Oracle, за
исключением Boolean, которые не могут быть назначены для столбцов.

Таблица 15.1. Типы данных PL/SQL

Типы данных
Описание

CHAR (size)
Строка фиксированной длины Максимум 255 символов
Умолчание - 1 байт

VARCHAR2(size) Переменная длина записи Максимально - 2000 байт. Не

допускается для применения в параметрах функций

FLOAT (p)
Числа с плавающей точкой (позиция точки не зафиксирована)
Максимально FLOAT (126)

NUMBER (p, s) Фиксированные с фиксированной позицией точки. Максимально

38 значащих цифр

DATE
Формат типа дата. Хранение в Юлианском календаре
(количество дней после 1 января 4712 до нашей эры;
максимальная дата 31 декабря 4712 нашей эры) Формат
преобразования по умолчанию определяется переменной
NLS_DATE_FORMAT или ALTER SESSION параметром

Составные (Composite) - это составной тип данных, такой как записи, который
позволяет объявить группу полей и манипулировать ей блоком PL/SQL.
Ссылочные (Reference) - ссылочные типы данных содержат значения, называемые
указателями.
LOB (Large Objects) - позволяют хранить неструктурированные данные (картинки,
текстовые файлы, видео, звук) объемом до 4 гигабайт. LOB поддерживает
произвольный доступ к данным. Различают четыре типа LOB:

CLOB (character large object) - позволяет хранить большие блоки символьных
данных;
BLOB (binary large objects) - служит для хранения больших бинарных
объектов;
BFILE (binary file) - служит для хранения больших бинарных объектов за
пределами Базы Данных;
NCLOB (national-language character large objects) - служит для хранения
больших single-byte или fixed-width NCHAR Unicode данных;
EXPR - любое значение, которое подходит по смыслу и типу данных.

Примечание: в PL/SQL также используются связываемые переменные (bind variable) и
переменные операционной системы, но они не относятся к PL/SQL.

9

Объявление переменных

Все переменные PL/SQL необходимо объявлять в декларативном разделе - DECLARE.
Рассмотрим синтаксис объявления переменной:

Identifier [CONSTANT] datatype [NOT NULL] [:=| DEFAULT expr]

Identifier - имя переменной. После объявления имени переменой на нее можно
ссылаться по имени из любой части программы.

CONSTANT - это переменная, значение которой нельзя изменить. Эта переменная должна
быть инициализирована. Инициализация в данном контексте означает, что значение
переменной при создании должно быть определенно, то есть значение этой переменной
необходимо присвоить в разделе DECLARE. Инициализация переменной производится с
помощью оператора присвоения (:=) или ключевого слова DEFAULT.

Datatype - определяет тип данных: скалярный, составной, ссылочный и LOB.

NOT NULL - ограничение, которое говорит о том, что значение переменой не может
быть пустым. Эта переменная должна быть инициализирована.

Рассмотрим пример объявления некоторых типов переменных.

1. Создайте новую форму и сохраните под именем Var.fmb.
2. Перейдите в узел “Блоки Данных”. Правым щелчком мыши вызовите

всплывающее меню и выберите пункт “Редактор Разметки”.

3. Разместите новую кнопку на канве. После того как вы разместите кнопку на канве,

Oracle Forms автоматически создаст блок.

4. Выделите кнопку и вызовите всплывающее меню. Во всплывающем меню

выберите пункт Универсальные триггеры | WHEN-BUTTON-PRESSED. В появившемся
PL/SQL-редакторе наберите и скомпилируйте нижеприведенный код:

DECLARE
 Height NUMBER (5, 2) := 172.43;
 Age NUMBER:= 21;
 Weight CONSTANT NUMBER := 74.5;
 Name VARCHAR2 (10) := 'Сергей';
 S_name CHAR (20) := NULL;
 F_name VARCHAR2 (20) NOT NULL:= 'Васильевич';
 Man BOOLEAN NOT NULL:= TRUE;
 City VARCHAR2 (50) DEFAULT 'Мариуполь';
 Born DATE default sysdate;
BEGIN
 Message('height: '||height);
 Message('Age: '||age);
 Message('Weight: '||weight);
 Message('Name: '||name);
 Message('S_name: '||s_name);

10

Доступ онлайн
1 000 ₽
В корзину