Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Язык PL/SQL Печать

PL/SQL - это процедурный блочно-структурированный язык. Он представляет собой расширение языка SQL и предназначен для работы с СУБД Oracle. PL/SQL предоставляет разработчику приложений и интерактивному пользователю следующие основные возможности:

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

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

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

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

Типы данных

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

  • встроенные типы данных, включая коллекции и записи;
  • объектные типы данных.

Скалярные типы описывают простые значения, не имеющие внутренних составляющих. Составные типы описывают структуры, в которых имеются внутренние компоненты. Ссылочные типы содержат значения. LOB типы содержат значения, называемые локаторами, которые определяют расположение больших объектов хранимых данных (например, графические файлы).

LOB-типы используются для хранения больших объектов (Large Object). Стандарт SQL-99 ввел поддержку LOB-типов для расширенного уровня соответствия. Однако в Oracle реализован более полный набор LOB-типов. В Oracle8е позволяется хранить данные LOB-типа до 4 Гбайт. Типы LOB от типа LONG отличаются, главным образом, тем, что при выборе значения любого LOB-типа посредством оператора SELECT возвращается указатель, а не само значение; кроме того, типы LOB могут быть и внешними. Oracle поддерживает следующие четыре типа для больших объектов:

Приведение типов

PL/SQL поддерживает явное и неявное приведение типов:явное приведение типов выполняется с помощью встроенных функций, а неявное - посредством PL/SQL (если это возможно) при присвоении значения одного типа. Значения переменных различных типов могут присваиваться друг другу в том случае, если они образованы из одного базового типа

Объявление переменных и констант

Переменные могут иметь тип данных SQL или тип данных PL/SQL. Переменная объявляется в секциях объявлений блока PL/SQL, подпрограммы или пакета. Для объявления переменной после ее идентификатора следует указывать любой доступный тип данных.

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

Атрибуты %TYPE и %ROWTYPE

Атрибут %TYPE позволяет объявлять переменную типа, соответствующего:

  • типу другой переменной;
  • типу столбца базы данных.

Атрибут %ROWTYPE позволяет объявлять переменную типа "запись", соответствующую строке таблицы. Переменная такого типа имеет поля, совпадающие с полями таблицы по имени и типу. Такой тип значительно облегчает программирование операций со строками, позволяя выполнять выборку строки целиком в одну переменную типа "запись", а также предотвращает необходимость перепрограммирования блоков в случае изменения структуры таблицы.

Операторы управления

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

операторы выбора:

  • IF-THEN-END IF;
  • IF-THEN-ELSE-END IF;
  • IF-THEN-ELSIF-END IF;

операторы цикла:

  • LOOP-END LOOP;
  • WHILE-LOOP-END LOOP;
  • FOR-LOOP-END LOOP;
  • EXIT;
  • EXIT WHEN;

операторы безусловного перехода:

  • GOTO;
  • NULL;
  • <<labels>>.