Для этого используют хранимые процедуры

Sp_addtype, sp_droptype, systypes 

EXEC sp_addtype my_type, 'VARCHAR(11)', 'NOT NULL'

Oracle)

Существует свой встроенный язык PL/SOL.

Процедурный язык запросов PL/SOL представляет собой процедурное расширение ANSI стандарта языка SQL, разработанное фирмой Oracle. Подобно другим стандартным языкам, PL/SQL имеет языковые элементы для объявления переменных, присвоения значений, проверки условий и ветвления, а также для построения: итеративных конструкций. Поскольку язык PL/SQL является процедурной оболочкой языка SQL, он хорошо интегрирован с SQL. Различные возможности языка позволяют ему взаимодействовать с СУБД Oracle, выполняя операции над наборами и отдельными строками таблиц. Язык PL/SQL является, в первую очередь, средством разработки программ, имеющих дело непосредственно с таблицами и другими объектами баз данных. Взаимодействие с операционной системой и внешними программными компонентами осуществляется через составляемые пакеты управления базами данных.

Язык PL/SQL является легко переносимым; он стандартизован для всех серверов фирм Oracle на различных платформах. Так как его типы данных базируются на типах данных серверов, язык является полностью машинно-независимым. Вам нет необходимости изучать (версии для UNIX, Windows NT, NetWare и т.д. Программа, написанная на языке PL/SQL,может быть откомпилирована и выполнена на любом сервере фирмы Oracle без модификации.

Ускорение выполнения сценариев SQL

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

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

Упрощение администрирования баз данных

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

Пакеты позволяют автоматизировать выполнение многих задач через установленные интервалы времени. Можно передавать данные о системе или приложении внешним мониторам производительности, написанным, возможно, на языках C++ и Delphi, и затем использовать их усовершенствованные средства построения отчетов и графиков для вывода информации в реальном масштабе времени.

 

SQL Server)

Можно настроить расписание (Sheadule) на выполнение подобных задач, на запуск хранимых процедур (например в определенные дни недели для профилактических работ) и настроить выдачу различных сообщений (Alerts).

 Существует возможность объявления переменных:

@ имя локальной переменной;

         Declare @ Var1 int.

кроме этого уже заранее есть глобальные переменные, которые могут быть вызваны:

       @@ Version SQLServer

, присвоения значений, проверки условий и ветвления.

Oracle)  продолжение PL/SQL

· Если проектирование объемного и сложного SQL-кода затруднительно, можно разбить его на части и выполнить их вместе в сценарии языка PL/SQL. Такой путь предпочтительнее, чем попытка объединить более семи таблиц, после чего SQL Executor наверняка зависнет.

· Чтобы разработать эффективное приложение, можно использовать язык PL/SQL для создания хранимых процедур и пакетов.

Последовательности Oracle.

Oracle)

Последовательность (Sequence) - это объект БД, создаваемый и принадлежащий пользователю и представляющий собой генератор чисел.

Типичное применение последовательности - создание значения для первичного ключа.

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

 

Пример использования последовательности:

INSERT INTO КЛИЕНТЫ

VALUES (КЛИЕНТ_ИД_ПОСЛ. NEXTVAL,'АОЗТ "Россы"', 1500, 101);

В свободный номер последовательности вставляется новая запись. Удобно тем что последовательность сама найдет следующий идентификатор. Также возможна работа с текущей записью при помощи CURVAL.

 

SQL Server)

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

Курсоры.

Oracle)

Курсоры могут явно объявляться в процедуре, функции или пакете

для облегчения ориентированной на записи обработки данных

ORACLE. Курсоры могут также неявно объявляться (для поддержки

других действий манипулирования данными) самим процессором

PL/SQL.

 

SQL Server)

Для перемещения по записям существует объект курсор

Курсоры бывают нескольких видов:

1) Динамический - позволяет перемещаться в любом направлении, отражает изменение данных и позволяет изменять данные

DECLARE клиенты_curs CURSOR

SCROLL_LOCKS

FOR SELECT ид, наименование

     FROM клиенты

     WHERE кредит> = 40000

ORDER BY ид;

2) не позиционный (forward only) – не позволяет перемещаться в любом направлении, только вперед, открывается быстро, работает относительно долго.

DECLARE клиенты_cursor CURSOR

FORWARD_ONLY

FOR SELECT ид, наименование

    FROM клиенты

     WHERE кредит> = 40000

3) Ключевой курсор (keyset), при его открытии набор полей однозначно идентифицирующий запись переносится в базу с временными данными Tempdb. Курсор позволяет менять поля не входящие в ключ. Отражает изменения.

DECLARE клиенты_cursor CURSOR

KEYSET

FOR SELECT ид, ФИО

     FROM продавцы

     ORDER BY ид;

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

различаются по направлениям движения по записям таблиц, по скорости работы и скорости открывания.

Курсор позволяет изменять данные и отражать изменения данных.

Можно изменять те данные в таблицах, куда указывает курсор

Update Table1

Set my _name =’andrew’

Where current of Name Cursor

Аналогичные возможности для вставки и удаления.

 

Триггеры.

Общее)

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

Триггер это часть транзакции вызвавшей его срабатывание, поэтому может вызвать откат транзакции.

Триггер связан с таблицей, на которую он наложен - это таблица триггера.

SQL Server)

На время работы триггера создаются две временные таблицы Inserted, Deleted аналогичные по структуре таблице триггера.

Последовательность действий при срабатывании триггера:

 Проверка ограниченийà если они выполняются то данные меняются à записываются в таблицы Inserted, Deleted à срабатывает триггер.

Структура создания триггера:


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: