DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Введение в PL/SQL

PL/SQL - это процедурное расширение языка SQL (Structured Query Language - структурированный язык запросов). SQL сегодня является повсеместно распространенным языком для выполнения запросов и изменений (хоть в его названии об этом и не говорится) в реляционных базах данных. Корпорация Oracle ввела в употребление PL/SQL для того, чтобы избавиться от некоторых ограничений, существующих в SQL, а также для того, чтобы иметь возможность предложить более полное программное решение разработчикам жизненно важных приложений, работающих с базами данных Oracle. В этой главе рассказывается о происхождении языка PL/SQL и приводится краткий обзор основных его элементов.
Мы не надеемся на то, что, прочитав эту главу, вы сразу же сможете писать блестящие программы на PL/SQL. Мы лишь хотим быть уверены в том, что ваших знаний о языке окажется достаточно для понимания и работы с примерами и описаниями функциональности, приводимыми далее в книге. Уделяя особое внимание тем особенностям языка, которые наиболее интересны для администратора баз данных, мы также хотели показать вам всю широту и мощь PL/SQL.
Конечно, в эту главу невозможно вместить все сведения о PL/SQL. Если вы никогда ранее не писали программ и сценариев на PL/SQL, то, вероятно, вам стоит обратиться за дополнительной информацией к двум книгам издательства O'Reilly: «Learning Oracle PL/SQL» (Изучаем Oracle PL/SQL) и «Oracle PL/SQL Programming» (Программирование на Oracle PL/SQL).
Что такое PL/SQL?
Язык Oracle PL/SQL имеет ряд определяющих характеристик:
PL/SQL - это высокоструктурированный, удобочитаемый и доступный язык.
PL/SQL отлично подходит для начинающих программистов. Язык несложен в изучении, названия его многочисленных ключевых слов и структур явно указывают на то, что делает данный фрагмент кода. Если вы знакомы с другими языками программирования, то без труда привыкнете к новому синтаксису.
PL/SQL - это стандартный и переносимый язык для разработки приложений на Oracle.
Написав на своем компьютере PL/SQL-процедуру или функцию для работы с базой данных Oracle, вы можете затем перенести эту процедуру в базу данных своей корпоративной сети и выполнять ее без каких бы то ни было изменений (естественно, при условии совместимости версий Oracle). Принцип «Write once, run everywhere» (написав однажды, запускай везде) был девизом PL/SQL задолго до появления Java. Для PL/SQL «везде» понимается как «везде, где есть база данных Oracle».
PL/SQL - это встроенный язык.
PL/SQL создавался не для автономной работы, а для того чтобы выполняться в определенной среде. Например, вы можете запускать программы на PL/SQL в базе данных (скажем, через интерфейс SQL*Plus). Вы также можете создать программу на PL/SQL и вызвать ее из формы или отчета Oracle Developer (так называемый «клиентский PL/SQL»). Однако невозможно создать исполняемый файл PL/SQL, который выполнялся бы сам по себе.
PL/SQL - это высокопроизводительный и высоко интегрированный язык для работы с базами данных.
В наше время существует широкий выбор средств, которые можно применять при создании приложений, работающих с базами данных Oracle. Можно использовать Java и JDBC, Visual Basic и ODBC, Delphi, C++ и т. д. Однако вы увидите, что проще всего написать эффективный код для доступа к базе данных Oracle именно на PL/SQL. В частности, Oracle предлагает некоторые специальные дополнительные возможности для PL/SQL, такие как конструкция FORALL, которые могут на порядок повысить производительность базы данных.
Основные элементы синтаксиса PL/SQL
В этом разделе вы познакомитесь с основами организации и синтаксиса программы на PL/SQL: структурой блока, набором символов, а также правилами для идентификаторов, разделителей операторов и комментариев.
Структура блока PL/SQL
Как и в большинстве процедурных языков, в PL/SQL наименьшей значимой единицей группировки кода является блок. Блок - это конструкция, обеспечивающая выполнение фрагмента кода и определяющая границы видимости переменных и область действия обработчиков исключений. PL/SQL позволяет создавать анонимные блоки (блоки кода, не имеющие названия) и именованные блоки (это могут быть процедуры, функции или триггеры).
В последующих разделах мы рассмотрим структуру блока и подробно остановимся на анонимных блоках. Различные виды именованных блоков будут описаны далее в главе.
Разделы блока
Блок PL/SQL может включать в себя до четырех разделов (рис. 1.1), лишь один из которых является обязательным.
Заголовок
Используется только для именованных блоков. Заголовок определяет, каким образом будет вызываться именованный блок или программа. Необязательный раздел.
Раздел объявлений
Определяет переменные, курсоры и подблоки, которые упоминаются в разделах исполнения и исключений. Необязательный раздел.
Раздел исполнения
Содержит операторы, которые будет выполнять ядро PL/SQL при исполнении блока. Обязательный раздел.
рис. 1.1. Структура блока pl/sql
Раздел исключений обрабатывает исключительные (по отношению к нормальной работе) ситуации (предупреждения и ошибки). Необязательный раздел.
Анонимные блоки. Если кто-то хочет сохранить анонимность, он не называет своего имени. Именно так и поступает анонимный блок в PL/SQL (рис. 1.2): в нем просто отсутствует раздел заголовка, такой блок начинается с DECLARE или BEGIN. Это означает, что его нельзя будет вызвать из какого-то другого блока, так как не на что установить ссылку. Анонимные блоки служат контейнерами для операторов PL/SQL и обычно включают в себя вызовы процедур и функций.
• Блок с такой же функциональностью, в который добавлен раздел объявлений:
В общем виде синтаксис анонимного блока PL/SQL будет таким:

В квадратные скобки заключены необязательные элементы конструкции. В блоке должны быть операторы BEGIN и END, а также хотя бы один исполняемый оператор. Рассмотрим несколько примеров анонимных блоков:
• Наиболее короткий анонимный блок:
BEGIN
— Только исполнение

DBMS_OUTPUT.PUT_LINE ('Hello world');


END;

Рис. 1.2. Анонимный блок, не имеющий разделов объявлений и исключений


Набор символов PL/SQL
Программа на PL/SQL состоит из последовательности операторов, каждый из которых образован одной или несколькими строками текста. Набор символов, из которых можно составлять эти строки текста, зависит от используемого в базе данных набора символов. Например, в таблице 1.1 приведен перечень символов, доступных в наборе US7ASCII.
Таблица 1.1. Символы из набора US7ASCII, доступные в PL/SQL
Тип
Символы
Буквы
A-Z, a-z
Цифры
0-9
Символы
~!@#$%*()_-+=|:;»'<>,.?/"
Пробельные
Знак табуляции, знак пробела, перевод каретки, конец
символы
строки

Любое ключевое слово, оператор и лексема PL/SQL состоит из различных комбинаций символов данного набора символов. Вам нужно лишь понять, как правильно собирать их вместе!
Помните, что PL/SQL нечувствителен к регистру, то есть не имеет значения, как вы набираете ключевые слова и идентификаторы. Заглавные буквы воспринимаются так же, как строчные, если только они не выделены специальными разделителями, превращающими их в строковый литерал. Для удобства восприятия авторы этой книги решили использовать верхний регистр для встроенных ключевых слов языка, а нижний - для идентификаторов, определяемых программистом.
Ряд символов (как по отдельности, так и в сочетаниях с другими символами) имеет специальное значение в PL/SQL (табл. 1.2).
Группы символов образуют лексемы, которые также называют атомарными единицами языка, так как они являются его наименьшими неделимыми составляющими. Лексемами в PL/SQL являются идентификаторы, литералы, разделители и комментарии. Им посвящены последующие разделы.
Таблица 1.2. Простые и составные специальные символы в PL/SQL
Символ
Описание
;

Точка с запятой завершает объявления и операторы.
%

Знак процента является указателем атрибутов (атрибуты курсора,


такие как %ISOPEN и атрибуты косвенного объявления, как %ROW-


TYPE); также используется как многобайтный групповой символ


в условии LIKE.


Одиночный символ подчеркивания: одиночный групповой символ


в условии LIKE.
@

Знак @ указывает на удаленное местоположение.


Двоеточие является указателем хост-переменной, как :block.item


в Oracle Forms.
**

Двойная звездочка - это оператор возведения в степень.
<>
или
Способы обозначения оператора отношения «не равно».
! =
или


или ~=

||

Двойная вертикальная черта - это знак операции конкатенации.
<<
и >>
Разделители меток.
<=
и >=
Операторы отношений «меньше или равно» и «больше или равно».
:=

Оператор присваивания.
=>

Оператор связывания для связывания по имени.


Две точки - оператор диапазона.
-

Двойной дефис служит указателем однострочного комментария.
/*
и */
Начальный и конечный ограничители многострочного комментария.

Идентификаторы
Идентификатор - это имя объекта PL/SQL (имя переменной или программы, зарезервированное слово). По умолчанию идентификаторы должны обладать следующими свойствами:
Иметь длину до 30 символов
Должны начинаться с буквы
Могут включать в себя знаки доллара $, подчеркивания (_) и диеза (#)
Не могут содержать никакие пробельные символы
Если два идентификатора отличаются только регистром одной или нескольких букв, то PL/SQL воспринимает их как один и тот же идентификатор. Например, следующие идентификаторы для PL/SQL идентичны:
lots_of_$MONEY$ LOTS_of_$MONEY$ Lots_of_$Money$
 


Фотоаппарат canon powershot a495 .







jAntivirus