Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Вопросы-ответы (БД экзамен).docx
Скачиваний:
297
Добавлен:
25.05.2018
Размер:
2.35 Mб
Скачать

36. Основные понятия и конструкции pl/sql. Архитектура pl/sql.

Oracle – это не просто база данных, она является также и процессором, поддерживающим различные языки программирования. Так Oracle9i содержит процессор Java со встроенной виртуальной машиной Java (Java Virtual Machine – JVM), а также процессор PL/SQL. Oracle является развитой системой, и поэтому не требует других программных продуктов. Процессор PL/SQL тесно интегрирован с базой данных.

Рис. 1 демонстрирует процесс работы PL/SQL внутри базы данных и за ее пределами. Центральное положение занимает сервер Oracle, который является основным процессором БД. Он координирует все обращения к базе данных. Когда программа посылает на сервер запрос, БД Oracle загружает откомпилированный код в память, после чего процессоры PL/SQL и SQL выполняют этот код.

PL/SQL (Procedural Language / Structured Query Language) язык программирования, процедурное расширение языка SQL, разработанное корпорацией Oracle.

PL/SQL предоставляет разработчику приложений и интерактивному пользователю следующие основные возможности:

  • реализация подпрограмм как отдельных блоков, в том числе использование вложенных блоков;

  • создание пакетов, процедур и функций, хранимых в базе данных;

  • предоставление интерфейса для вызова внешних процедур;

  • поддержка как типов данных SQL, так и типов, вводимых в PL/SQL;

  • применение явного и неявного курсора, а также оператора цикла FOR для курсора;

  • введение у переменных PL/SQL и курсоров атрибутов, которые позволяют ссылаться на тип данных или структуру элемента;

  • введение типов коллекций и объектных типов;

  • поддержка набора операторов управления и операторов цикла;

  • реализация механизма обработки исключений.

Язык PL/SQL обладает следующими определяющими характеристиками, которые можно отнести к его несомненным достоинствам:

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

  • Стандартный переносимый язык разработки приложений для баз данных Oracle. Если вы написали на PL/SQL процедуру или функцию для базы данных Oracle, находящейся на портативном компьютере, то эту же процедуру можно будет перенести в базу данных на компьютере корпоративной сети и выполнить ее без каких-либо изменений (конечно, при условии совместимости версий Oracle). «Написать один раз и использовать везде» — этот основной принцип PL/SQL был известен задолго до появления языка Java. Впрочем, «везде» в данном случае означает «при работе с любой базой данных Oracle».

  • Встроенный язык. PL/SQL не используется как самостоятельный язык программирования. Это встроенный язык, работающий только в конкретной управляющей среде. Таким образом, программы PL/SQL можно запускать из базы данных (скажем, через интерфейс SQL*Plus). Также возможно определение и выполнение программ PL/SQL из формы или отчета Oracle Developer (клиентский PL/SQL). Однако вы не сможете создать исполняемый файл программы на PL/SQL и запускать его автономно.

  • Высокопроизводительный, высокоинтегрированный язык баз данных. В настоящее время существует много способов написания программ, работающих с базами данных Oracle. Например, можно использовать Java и JDBC или Visual Basic и ODBC, а можно воспользоваться, скажем, Delphi, C++ и т. д. Однако эффективный код для работы с базой данных Oracle проще написать на PL/SQL, чем на любом другом языке программирования. В частности, Oracle имеет несколько расширений, предназначенных специально для PL/SQL, таких как инструкция FORALL, позволяющая повысить производительность обработки запросов на порядок и более.

Одним из важнейших аспектов PL/SQL является его тесная интеграция с SQL. Для выполнения SQL-инструкций в программах на PL/SQL не требуется никакой промежуточной программной «прослойки» вроде ODBC (Open Database Connectivity) или JDBC (Java Database Connectivity). Инструкция UPDATE или SELECT просто вставляется в программный код.

Основной программной единицей PL/SQL является блок, который может содержать вложенные блоки, называемые иногда подблоками.

Блок позволяет объединять объявления и операторы, связанные общей логикой; может быть анонимным и именованным.

Блок состоит из трех основных частей:

  • секция объявлений (необязательная часть);

  • тело блока;

  • обработчики исключений (необязательная часть).

Язык PL/SQL позволяет определять следующие типы именованных блоков:

  • процедуры;

  • функции;

  • объекты;

  • пакеты.

Все они могут быть скомпилированы и сохранены как объекты базы данных в некоторой её схеме. Все именованные блоки кода, кроме пакетов, не хранят внутреннее состояние от вызова к вызову.

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