- •Кафедра «Информационные технологии»
- •Основы языка Transact-SQL
- •9. Хранимые процедуры
- •Последний подход лучше, т.к. позволяет
- •ХП представляют собой фрагменты программного кода на T-SQL, которые
- •Основное преимущество ХП -
- •Кроме того, ХП обладают
- •• ХП поддерживают модульное
- •• ХП проще использовать: они могут состоять из десятков и сотен команд, но
- •• Хранение процедур в том же
- •Для обеспечения целостности данных, а также в целях безопасности,
- •В результате:
- •ХП существуют независимо от
- •Изменять код ХП разрешается
- •9.2. Хранимые процедуры
- •Системные ХП размещаются в
- •Практически все действия по
- •Локальные ХП размещаются и выполняются в пользовательских БД.
- •Временные локальные процедуры доступны только из
- •Временные глобальные процедуры доступны в любой
- •Удаленные хранимые процедуры можно вызывать с сервера, отличного от текущего сервера. При этом
- •Еще один тип ХП - расширенные ХП
- •ХП можно создавать:
- •В ХП могут использоваться все операторы SQL, кроме операторов
- •Синтаксис оператора создания ХП
- •Параметры оператора создания ХП
- •При обращении из тела ХП к объектам той же БД можно использовать укороченные
- •Номер в имени (номер версии или версия) – номер ХП, однозначно определяющий ее
- •Использование в имени процедуры
- •Для передачи входных и выходных
- •Для определения типа данных,
- •Ключевое слово OUTPUT означает,
- •При указании ключевого слова OUTPUT значение соответствующего
- •Ключевое слово VARYING применяется совместно с параметром OUTPUT, имеющим тип CURSOR. Оно определяет,
- •Т.к. сервер кэширует план исполнения
- •Параметр FOR REPLICATION
- •Ключевое слово AS размещается в начале тела ХП, т.е. набора команд
- •Для выполнения ХП - команда:
- •Использование ключевого слова
- •Из синтаксиса команды EXECUTE
- •Если требуется опустить параметры, имеющие значения по умолчанию, то
- •Порядок создания ХП с помощью
- •4. В открывшемся окне вводятся операторы Transact-SQL создаваемой ХП. При этом предлагается готовый
- •В целом, создание ХП предполагает решение следующих задач:
- •Пример 1. Создание и использование ХП, возвращающей список студентов заданной группы (входной параметр
- •Вызов данной процедуры (допустим, что это единственная команда передаваемого на исполнение пакета) для
- •Пример 2. Процедура без параметров -
- •Для обращения к процедуре можно использовать команды:
- •Пример 3. Процедура без параметров
- •Пример 4. Процедура с двумя параметрами - уменьшение цены товара заданного типа на
- •Для обращения к процедуре можно использовать одну из команд:
- •Если данную процедуру изменить, задав значения параметров по умолчанию (остальной код прежний):
- •Пример 5. Процедура с входными и
- •Для обращения к процедуре можно использовать набор команд:
- •10. Триггеры
- •DML-триггеры - применение:
- •Триггеры – основные свойства:
- •• Триггеры – полезное, но и «опасное»
- •Команды создания триггеров
- •В последних версиях СУБД MS SQL Server (начиная с 2005) возможно создание двух
- •DML-триггеры выполняются при
- •10.1. DML-триггеры
- •Параметр WITH ENCRYPTION
- •Ключевые слова INSERT (Вставить),
- •В отличие от ХП и функций
- •Триггер AFTER запускается после успешного завершения SQL Server всех
- •Триггер INSTEAD OF выполняется вместо операции, вызвавшей запуск
- •Для таблицы или представления можно создать любое число триггеров AFTER, но для каждой
- •При выполнении команд добавления,
- •В зависимости от типа операции (INSERT, DELETE, UPDATE), вызвавшей выполнение DML-триггера, содержимое таблиц
- •• команда DELETE – в таблице deleted будут содержаться все
- •• команда UPDATE – при ее выполнении в таблице deleted находятся старые значения
- •Для получения информации о количестве строк, которое будет изменено при успешном завершении
- •Важно: DML-триггер запускается
- •Например, если DML-триггер «обнаружил», что из 100 вставляемых, изменяемых или удаляемых строк только
- •Триггер выполняется как
- •Для получения списка столбцов, измененных при выполнении команд
- •Функция COLUMNS_UPDATED()
- •Пример 1. Создание триггера типа AFTER, который запрещает обновлять
- •Так как триггер расположен в одной
- •Пример 2. Создание триггера типа INSTEAD OF, срабатывающего на попытку удаления строк из
- •10.2. DDL-триггеры
- •Например, нужно запретить всем
- •Общий синтаксис для создания DDL-
- •Пример 1. DDL-триггер, запрещающий удаление или изменение таблицы и генерирующий соответствующее сообщение:
- •Для получения информации о событии (DDL-операции) можно использовать встроенную функцию EVENTDATA(), которая возвращает
- •Пример 2. Создание и работа DDL- триггера, который будет вызываться при любом изменении
- •Затем создается триггер:
- •Для проверки триггера выполним две
- •Введем команду, которая позволит выбрать данные из ранее созданной таблицы аудита с именем
Кафедра «Информационные технологии»
Базы данных
Курс лекций по дисциплине «Базы данных»
для специальности направления 1-40 01 02 01 «Информационные системы и
технологии (в проектировании и производстве)»
автор-составитель
Е.Г. Стародубцев, доцент, канд. физ.-мат. наук
Основы языка Transact-SQL
Лекция 3
9.Хранимые процедуры
9.1.Общие сведения о хранимых процедурах
9.2.Хранимые процедуры в среде
MS SQL Server
10. Триггеры
2
9. Хранимые процедуры
9.1. Общие сведения о хранимых процедурах
При создании приложения, связанного с БД (в частности, с БД SQL Server), - проблема организации программного взаимодействия с БД.
Для решения - 2 основные возможности:
•формировать команды SQL на стороне клиента, а затем посылать эти команды на сервер для выполнения;
•перенести часть программного кода на
сторону сервера. |
3 |
Последний подход лучше, т.к. позволяет
отделить интерфейс пользователя от
интерфейса данных и в результате: уменьшить вероятность ошибок; повысить защиту данных; уменьшить передачу данных по сети.
Одно из средств реализации такого подхода – хранимые процедуры (ХП), которые чаще всего используются в качестве программных модулей на стороне сервера. Выполнить ХП часто гораздо проще, чем последовательность отдельных операторов SQL.
4
ХП представляют собой фрагменты программного кода на T-SQL, которые
выполняются на сервере.
ХП могут запускаться вызывающим их приложением, правилами проверки целостности данных или триггерами.
ХП может иметь параметры, позволяющие передавать в нее и получать обратно значения, выбираемые из таблиц или вычисляемые при работе ХП.
5
Основное преимущество ХП -
высокая оперативность обработки
информации, обусловленная использованием, как правило, мощного компьютера-сервера (как для хранения, так и для обработки данных)
и тем, что для доступа к данным не тратится лишнее время, поскольку БД размещается на сервере.
6
Кроме того, ХП обладают
следующими преимуществами:
• В сравнении с использованием динамических операторов языка SQL
ХП работают быстрее (как правило), так как они компилируются при первом выполнении с использованием оптимизации доступа к информации из таблиц.
7
• ХП поддерживают модульное
программирование, так как
позволяют разбивать большие задачи
на самостоятельные, более мелкие и
удобные в управлении части.
•ХП могут вызывать другие ХП и
функции.
•ХП могут быть вызваны из
прикладных программ других типов.
8
• ХП проще использовать: они могут состоять из десятков и сотен команд, но для их запуска достаточно указать всего лишь имя нужной ХП.
Это позволяет уменьшить размер запроса, посылаемого от клиента на
сервер, а значит, и нагрузку на сеть.
9
• Хранение процедур в том же
месте, где они исполняются,
обеспечивает уменьшение объема
передаваемых по сети данных и
повышает общую
производительность системы.
• Применение ХП упрощает сопровождение сложных программных комплексов и внесение изменений в
них. |
10 |
|