PL/SQL. Начало. Обзор основных возможностей

Данная статья – первая в цикле о языке программирования PL/SQL, использующегося для работы с базами данных Oracle. Мы рассмотрим:

  • Язык  PL/SQL
  • PL/SQL Block
  • Package and Triggers
  • Переменные
  • Типы переменных
  • Правила именования переменных

Язык  PL/SQL

SQL является декларативным языком программирования, а это в свою очередь накладывает определенные ограничения на него. В частности нет прямой поддержки циклов. Преимуществом является простота и слабые требования к мощности сервера. Длительное время чистого sql хватало для работы с данными, но с ростом мощности серверов (увеличение процессоров, оперативной памяти, кэш-памяти и т.д.) стало понятно, что многие операции для работы с данными, можно выполнять еще на уровне базы данных. Для этой цели компания Oracle, разработала язык программирования PL/SQL (Procedural Language/SQL), который является надстройкой над языком SQL. Это дает возможность использовать чистый sql в pl/sql.

PL/SQL Block

Блок pl/sql выглядит следующим образом:

DECLARE – секция, в которой описываются переменные, курсоры, исключения и другие параметры.

Секция является опциональной, это значит, что она может отсутствовать, если нет необходимости описывать переменные.

BEGIN … END. Основной блок PL/SQL, в котором пишутся SQL – запросы и PL/SQL.

EXCEPTION – так же является опциональным, указывается в случае необходимости перехвата исключений. Очень похоже на обработку исключений в языке  Java.

Описаный выше блок pl/sql является анонимным. Так же PL/SQL дает возможность описать блоки PROCEDURE и FUNCTION. Разберем кратко каждый из них.

Anonymous (анонимный) 

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

Procedure (процедуры)

  • Хранится на стороне сервера
  • Именованная
  • Компилируетя один раз
  • хранится в базе данных
  • есть возможность обращаться из других приложений
  • может принимать входящие параметры
  • не возвращает значения

ЗЫ. Что касается последнего пункта, то процедура может возвращать значения в входящих параметрах, помеченных как OUT. 

Function ( функции)

Все пункты для процедур верны и для функций, за исключений того, что функции явно возвращают значения. Если вы пишите на Java, то функции – всегда не  void.

Package and Triggers

Помимо процедур, PL/SQL дает возможность использовать дополнительные возможности в виде пакетов (package) и триггеров (triggers).

Package – позволяет объединить в себе несколько процедур и функций, к которым можно обращаться извне, указывая сочетание имя пакета + имя процедуры или функции:

Trigger – блок, который срабатывает при наступлении определенного события ( обновление таблицы, занесение данных, наступлениям определенного времени и т.п) и выполняет действия с данными.

Подробнее о пакетах и триггерах мы поговорим в следующих статьях.

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

Название переменной ВСЕГДА должно начинаться с буквы. Как уже было сказано выше, описываем переменные в блоке DECLARE.

Так же с помощью ключевого слова CONSTANT можно задать константу. Смысл такой же как и в других языках программирования. Константа не изменяется. В общем виде переменные объявляются так:

В PL/SQL для переменной можно явно указать, что она не может быть NULL, а так же задать значение по умолчанию. Что касается NULL, то его смысл такой же как и в других языках – это пустота. В операторах =, <, >  NULL всегда FALSE.

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

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

  • Скаляр
  • Ссылки
  • LOB ( Large Object)

Правила наименования переменных

Правилом хорошего тона в присваивании имен переменных в pl/sql является добавление префикса перед названием. Это поможет избежать возможных совпадений имен, а так же явно указать на зону жизни или тип переменной, а так же облегчает чтение кода.

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

Оставить комментарий:

Ваш email не будет опубликован.