Совершенствование приложений Oracle Forms
Покупка
Новинка
Тематика:
Системы управления базами данных (СУБД)
Издательство:
ИНТУИТ
Автор:
Сергеенко Сергей Васильевич
Год издания: 2016
Кол-во страниц: 239
Дополнительно
Курс расширяет для разработчика возможности Oracle Forms, позволяя создавать многомодульные приложения, встраивать в приложения отчеты, меню, библиотеки и программные единицы.
В курсе подробно рассматривается язык PL/SQL, создание различных программных единиц на его основе и их применение для обработки событий и использования встроенных возможностей Forms Builder. Слушатель научится создавать приложения, взаимодействующие с Microsoft Office, а также интегрировать различные приложения в форму, такие как Adobe Acrobat, Windows Media Player, Explorer и др.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
- ВО - Магистратура
- 09.04.01: Информатика и вычислительная техника
- 09.04.02: Информационные системы и технологии
- 09.04.03: Прикладная информатика
- 09.04.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Совершенствование приложений 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