Иван Задворьев - Язык PL/SQL

Язык PL/SQL
Название: Язык PL/SQL
Автор:
Жанр: Базы данных
Серии: Нет данных
ISBN: Нет данных
Год: 2018
О чем книга "Язык PL/SQL"

В учебно-методическом пособии рассматриваются основы языка программирования PL/SQL, реализованного в системе управления базами данных Oracle Database Server. Приводятся сведения о поддерживаемых типах данных, структуре программ PL/SQL и выполнении SQL-предложений в них. Отдельно рассмотрено создание хранимых в базах данных Oracle программ PL/SQL – процедур, функций, пакетов и триггеров.

Бесплатно читать онлайн Язык PL/SQL


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

Назначение PL/SQL

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 для расчета клиентской задолженности может выглядеть примерно так:

SQL> BEGIN

2 calc_clients_debt(p_account_from=>100001,p_account_to=>200000);

3 END;

4 /


PL/SQL procedure successfully completed.

Только четыре строки для запуска процедуры calc_clients_debt будут переданы с ноутбука на Linux-сервер, где сервер баз данных Oracle, получив эти строки, выполнит процедуру PL/SQL. На ноутбук обратно вернутся только сведения об успешности завершения работы процедуры – одна строка. Требуемые для расчетов гигабайты финансовых данных для заданного диапазона в 100 000 лицевых счетов на ноутбук по сети передаваться не будут – выборка всех данных клиентов c помощью выполнения SQL из PL/SQL и все расчеты по ним в PL/SQL будут осуществляться ядром СУБД Oracle на мощном Linux-сервере. На этом же сервере, в этой же базе данных Oracle процедурой calc_clients_debt будут сохранены и результаты вычислений.

Так расчет задолженности мог выглядеть, если бы его запускал технический специалист, знающий устройство базы данных и предпочитающий работать с ней в SQL*Plus. Понятно, что сотрудники бухгалтерии или клиентского отдела не работают с базой данных в SQL*Plus. Для них должна быть разработана и установлена клиентская программа на C#, Java или другом языке программирования с экранными формами и отчетами. В этой программе на экранной форме пользователь задает диапазон обрабатываемых лицевых счетов и нажимает кнопку «Рассчитать задолженность».

Клиентская программа через соответствующие программные интерфейсы, которые есть в большинстве современных языков программирования, запускает в Oracle на выполнение хранимую процедуру calc_clients_debt и начинает показывать пользователю наполняющиеся песочные часы или бегающую полоску (progress bar). Сама программа при этом не осуществляет обработку данных, которая в это время идет на удаленном Linux-сервере. Как только хранимая процедура успешно завершится и сервер Oracle сообщит об этом клиентской программе, та выдаст пользователю сообщение «Задолженность успешно рассчитана».

Это типичный сценарий использования PL/SQL: реализация бизнес-логики (в данном примере – расчета клиентской задолженности) в виде хранимой в базе данных процедуры на PL/SQL с ее запуском из клиентской программы, подключившейся к серверу Oracle по сети. Обычно программы на PL/SQL работают «под капотом» и их не видно снаружи.

Достоинства и недостатки хранимых программ

При реализации бизнес-логики вполне можно обойтись и без использования хранимых программ. Так, задачу расчета клиентской задолженности можно решить двумя способами:

разработать одно или несколько (frontend, backend) приложений на Java, JavaScript, C++, Python и т. п., реализующих только пользовательский интерфейс, а бизнес-логику собственно расчета задолженности реализовать в виде хранимой программы, которую вызывают приложения при запуске процесса расчета;

разработать одно или несколько (frontend, backend) приложений на Java, JavaScript, C++, Python и т. п., реализующих и пользовательский интерфейс, и бизнес-логику расчета задолженности.

Для второго способа база данных используется только для хранения данных. Все необходимые данные по каждому клиенту извлекаются приложением из базы, обсчитываются приложением и полученные сведения о задолженности сохраняются обратно в базу. Обсчитывающее данные приложение часто размещают на том же сервере, где находится база данных – чтобы сеть не стала узким местом системы.

Выбор используемого способа решения задачи является обязанностью архитектора системы, при этом следует учитывать много факторов, формируемых в каждом конкретном случае на основе известных достоинств и недостатков использования хранимых программ.

Достоинства хранимых программ:

переносимость хранимых программ вместе с базой данных;

повышенная производительность обработки за счет отсутствия передачи данных вне сервера баз данных;

тесная интеграция с подсистемой выполнения SQL (предложения SQL в хранимых программах выполняются без использования дополнительных интерфейсов и драйверов);

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

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


С этой книгой читают
Учебное пособие предназначено для студентов, изучающих в дисциплинах «Базы данных» и «Управление данными» языковые и программные средства создания баз данных и манипулирования данными. Рассматривается реляционная модель данных. Приводятся содержательные определения основных понятий из области проектирования реляционных баз данных. Язык SQL изучается на примере версии Access SQL (Microsoft Jet SQL), поскольку учебное пособие рассчитано на начинающ
Как жить в мире, где информацию о тебе может получить кто угодно и когда угодно? Ведущий мировой эксперт по будущему Big Data Андреас Вайгенд знает ответ. Он разрабатывал стратегию данных таких крупных рыб, как Alibaba, Goldman Sachs, Lufthansa, Thomson Reuters. Работал руководителем по Big Data в компании Amazon, является Директором компании Social Data Lab, преподаёт в IT-школе Калифорнийского университета Беркли.Андреас уверен, что этот «дом с
Эта pdf-книга о том, как за счет имеющихся внутренних ресурсов обеспечивать рост онлайн-школ. Pdf-книга написана в поддержку программы РКС, о которой вы узнаете по ходу чтения.Далее, в процессе изложения своего видения взрывных системных стратегий, pdf-книгу я буду называть материалом. Для меня же самого и, надеюсь, для вас этот материал станет пособием с приставкой «ввод» в большую тему работы с базой.В формате PDF A4 сохранен издательский макет
Наш телефон знает о нас больше, чем мы думаем. Он умеет собирать и анализировать информацию о том, как мы передвигаемся по городу, какие посты лайкаем и какими приложениями пользуемся. Он сообщит о пробках и поторопит на работу, чтобы мы не опоздали; подберет музыку под наше настроение и составит список персональных рекомендаций, чем можно занять себя в течение дня. Телефон – больше не устройство, по которому звонят, это уже средство управления о
В книге обобщен личный опыт автора в области клинической хирургии, управления ЛПУ и медицинскими службами, в разработке медицинских информационных систем различного назначения, в том числе консультативных экспертных систем диагностики и выбора оптимальных решений в сложных ситуациях, в управлении качеством медицинской помощи, а также преподавании информатики в системе медицинского последипломного образования.Предпринята попытка представить в дост
Водить автомобиль можно учиться, преследуя различные цели: вождение, как профессия, автоспорт, вождение автомобиля, как средства необходимого передвижения.В данной книге речь будет идти не о том, как стать автогонщиком, не о приобретении профессии «водитель автомобиля», а о вождении личного легкового автомобиля, именно, как средства передвижения.Книга также издавалась под названием «Как научиться водить автомобиль».CD прилагается только к печатно
Мне всегда везло на хороших людей. Каждый из них вставлял важный кусочек мозаики в ту неоконченную картину мира, которую я себе рисовала. Каждый привносил то, чего не хватало именно мне. Каждый обязательно чему-то учил. По большому счету, я – результат их стараний, их бледная тень.Время течет, и жизнь непозволительно убыстряется, великодушно оставляя рядом самых близких, самых важных. Самых любящих и милосердных. Им не нужно ничего объяснять, с н
Двадцативосьмилетняя Айрис, сотрудница модного креативного агентства, изнывает от тоски на работе, делая при этом вид, что серьезно занимается бесполезными проектами с названиями типа «Лосось: цифровая стратегия». После работы она регулярно выпивает с коллегами до состояния «ничего не помню». Не хочет, чтобы ее «записали в сумасшедшие», поэтому глушит свою тревожность закупаемыми в интернете таблетками. У нее сложные отношения с матерью из-за нан