PL/SQL – «Procedural Language extensions to the Structured Query Language», что переводится как «Процедурные языковые расширения для языка SQL».
Практически в каждой СУБД корпоративного уровня есть язык программирования, предназначенный для расширения возможностей SQL:
PL/SQL – в Oracle Database Server;
Transact-SQL – в Microsoft SQL Server;
SQL PL – в IBM DB2;
PL/pgSQL – в PostgreSQL.
На этих языках создаются программы, которые хранятся непосредственно в базах данных и выполняются СУБД, поэтому их называют языками хранимых процедур (stored procedure languages). Языки хранимых процедур имеют схожие синтаксис и семантику, поэтому после освоения языка PL/SQL впоследствии можно будет довольно легко перейти, например, на Transact-SQL или PL/pgSQL.
Функция на языке Oracle PL/SQL
Функция на языке PL/pgSQL PostgreSQL
CREATE FUNCTION F1 RETURN INT AS
BEGIN
FOR r IN (SELECT * FROM tab1) LOOP
UPDATE tab2 SET at3=r.at2;
END LOOP;
RETURN 1;
END;
CREATE FUNCTION F1() RETURNS int AS '
DECLARE
r RECORD;
BEGIN
FOR r IN SELECT * FROM tab1 LOOP
UPDATE tab2 SET at3=r.at2;
END LOOP;
RETURN 1;
END;
' LANGUAGE plpgsql;
Задачи, решаемые PL/SQL
PL/SQL, в отличие от Java, Python или C++, не используется для разработки математических приложений, игр и т. п. Это специфичный язык программирования третьего поколения, предназначенный для работы с базами данных Oracle прямо в ядре сервера Oracle. Фактически программы на PL/SQL – это обертки вокруг предложений SQL.
Язык PL/SQL используется для решения следующих задач:
реализация серверной бизнес-логики в виде хранимых программ;
автоматизация задач администрирования баз данных Oracle;
разработка web-приложений;
разработка клиентских приложений в среде Oracle Developer.
Мы не будем останавливаться на автоматизации задач администрирования баз данных и разработке клиентских приложений, а сосредоточимся на главном направлении использования PL/SQL – реализации бизнес-логики на стороне сервера в виде хранимых программ.
Сценарий использования программ PL/SQL
Пусть в корпоративной сети на Linux-сервере находится база данных Oracle со сведениями о клиентах организации. Подключимся к серверу Oracle с ноутбука по сети с помощью утилиты SQL*Plus. Запуск на выполнение из SQL*Plus процедуры PL/SQL calc_clients_debt для расчета клиентской задолженности может выглядеть примерно так: