
- •Обзор баз данных Oracle
- •Обзор Oracle
- •Теоретические и физические аспекты реляционных баз данных
- •Рсубд против систем плоских файлов: быстрое ознакомление
- •Закрепление пройденного материала
- •Упражнения
- •Реализации рсубд и орсубд Oracle
- •Дисковые компоненты Oracle
- •Процесс сервера и фоновые процессы Oracle
- •Что такое орсубд
- •Закрепление пройденного материала
- •Упражнения
- •Использование и преимущества pl/sql
- •Закрепление пройденного материала
- •Упражнения
- •Написание основных операторов sql
- •Возможности операторов sql select
- •Познакомьтесь: sql* Plus
- •Закрепление пройденного материала
- •Упражнения
- •Выполнение операторов select
- •Задание префиксов столбцам по имени таблицы
- •Арифметические данные и данные из таблиц
- •Старшинство операторов
- •Обработка значений null
- •Замена заголовков столбцов псевдонимами
- •Объединение столбцов с помощью конкатенации
- •Закрепление пройденного материала
- •Упражнения
- •Различия между командами sql и sql*Plus
- •Использование текстового редактора
- •Запись команд sql в сценариях
- •Другие команды sql*Plus, о которых следует знать
- •Закрепление пройденного материала
- •Упражнения
- •Резюме Обзора баз данных Oracle
- •Двухминутное погружение в пройденное
- •Вопросы для самопроверки
- •Вопросы ко всей теме
Использование и преимущества pl/sql
Сегодня вопрос о том, как писать программы на PL/SQL, не входит в программу первого экзамена ОСР — введения в SQL. Тем не менее вам, как собирающемуся стать профессионалом Oracle, стоит потратить немного времени, чтобы узнать о существовании PL/SQL и о его использовании и преимуществах. PL/SQL — так называется собственный язык Oracle для разработки приложений базы данных. Помимо того что этот язык поддерживает все операции SQL, которые поддерживает Oracle SQL, PL/SQL добавляет в него такие присущие языку программирования расширения, как обработку условных операторов, циклы, переменные, операции с курсорами, абстрактные типы данных, модуляризацию (разбивку на модули), инкапсуляцию, перегрузку операций (так в объектно-ориентированном программировании называется возможность выбора компилятором различных реализаций одной и той же функции в зависимости от типов ее параметров в вызове функции) и много других возможностей. В приводимом ниже списке перечисляются часто называемые причины, почему разработчики на PL/SQL пользуются этим языком:
Языку PL/SQL легко научиться и им легко пользоваться. Даже профессионалы со скромным уровнем предварительных знаний по программированиюмогут теперь без слишком больших усилий довольно быстро освоить синтаксис PL/SQL и приступить к разработке программ средней сложности.
Профессионалы, если у них отсутствует какой бы то ни было предварительный опыт программирования, могут при изучении PL/SQL затратить больше усилий на ознакомление с такими базовыми конструкциями языка, как определение переменных, обработка условных операторов и тому подобное.
PL/SQL хранится в базе данных Oracle, что значительно повышает производительность. Это означает, что достаточно скомпилировать код в базе данных Oracle, после чего он сразу становится доступным всем пользователям системы. Исчезает необходимость в длительном развертывании, как в традиционных приложениях клиент/сервер. Результатом компиляции является код, который быстро выполняется и естественным образом работает с данными Oracle.
PL/SQL легко интегрируется с базами данных Oracle. Для выполнения операций SQL, в которых задействованы данные из базы данных Oracle, не требуется специального синтаксиса команд. Не требуется в качестве префиксов переменных использовать двоеточия, вопросительные знаки или какие-то другие дополнительные символы, как в других языках. Единственным исключением из этого правила является разработка триггеров, которые являются гибридом объекта базы данных и PL/SQL.
PL/SQL особенно хорош при обработке больших блоков данных. Oracle PL/SQL предлагает специальную конструкцию, которая называется ЦИКЛом cursor for и которая позволяет вам делать запросы к нескольким строкам данных таблицы, а затем интерактивным образом обрабатывать по одной строке данных. Этот режим позволяет обрабатывать очень большое количество данных.
PL/SQL приходит к пользователям с большим количеством поставляемых Oracle кодов (программ), помогающих при выполнении конкретных задач. Oracle распространяет вместе с каждой поставляемой базой данных несколько пакетов с кодами PL/SQL. Эти коды позволяют пользователям выполнять в высшей степени специализированные задачи типа ввода-вывода файлов, выборки web-страниц из базы данных, планирования заданий, динамических операторов SQL, межпроцессных взаимодействий, управления ресурсами и многие другие. Ссылаться на эти поставляемые Oracle пакеты можно точно так же, как и на другие программы на PL/SQL.
PL/SQL поддерживает именованные и анонимные программы. Имеется много различных типов именованных программ, которые можно разрабатывать в PL/SQL, в том числе хранимые процедуры, функции и пакеты. Эти блоки кода обычно компилируются и хранятся в базе данных, где они доступны для дальнейшего использования. Кроме того, можно писать и так называемые анонимные программы, которые компилируются в тот момент, когда вы размещаете код для выполнения, и затем выполняются, но не записываются на хранение в базу данных.
PL/SQL можно интегрировать с таблицами базы данных через триггеры .Oracle через триггеры интегрирует программную деятельность PL/SQL с таблицами баз данных. Эта характеристика позволяет разрабатывать приложения, использующие для регулирования данных в базе данных сложные бизнес-правила, что существенно снижает для пользователей возможность разрушения базы данных или ввода в нее неподходящих данных.
PL/SQL поддерживает инкапсуляцию и модуляризацию. Термин "инкапсуляция" означает использование одной именованной программы PL/SQL для вызова другой именованной программы PL/SQL. Модуляризация заключается в разбивке большой задачи на несколько более мелких и в последующем написании именованных программ PL/SQL для обработки этих более мелких задач. В результате получается код, который легче читать и сопровождать.
PL/SQL поддерживает перегрузку. Перегрузка происходит в том случае, когда имеется пакет, содержащий процедуры или функции с одними и теми же именами, которые принимают в качестве входных параметров различные наборы переменных или различные типы данных. Когда вызывается перегружаемая процедура, Oracle динамически определяет, какую версию процедуры следует использовать, опираясь на типы данных переданных в процедуру переменных.
PL/SQL позволяет программистам собирать написанные на этом языке коды в пакеты (пакетировать коды). Oracle PL/SQL поддерживает конструкцию, которая называется пакетом. Эта характеристика позволяет логически объединять несколько процедур или функций, которые работают совместно, в единую конструкцию. Сгруппированные в пакеты процедуры работают лучше, чем они работали бы поодиночке, потому что все процедуры пакета будут загружены в память сразу же после вызова первой входящей в него процедуры. Напротив, одиночные (т.е. не входящие в пакет) процедуры загружаются только после того, как они будут вызваны. За счет пакетирования сокращаются так называемые накладные расходы, требующиеся Oracle для управления памятью, и увеличивается производительность.
PL/SQL поддерживает расширенные типы данных. PL/SQL дает пользователям возможность определять абстрактные типы данных, например записи, позволяя добиться объектно-ориентированной гибкости в процедурном коде. Кроме того, PL/SQL предлагает конструктивные элементы таблиц для определения и использования переменных, приближающиеся к использованию массивов. Наконец, PL/SQL позволяет декларировать ссылочные типы (REF) данных, что дает возможность использовать типы данных, аналогичные указателям в С и C++.
• Код PL/SQL является переносимым. Можно написать на PL/SQL программу для базы данных Oracle, выполняющейся в среде Solaris, а затем перенести программу в среду Oracle для Windows 2000 или для любой другой операционной системы, не переписывая программу.