Khranimye_protsedury

Слайд 2

Хранимые процедуры

Хранимая процедура (Stored Procedure) – это именованный набор команд языка Transact-SQL,

Хранимые процедуры Хранимая процедура (Stored Procedure) – это именованный набор команд языка
хранящийся на сервере в качестве самостоятельного объекта БД

SP хранится на сервере (пакет – на клиенте)
Для вызова используется имя (у пакета нет имени)
SP могут вызвать друг друга (пакеты не могут)
Изменения вносятся в одном месте, на сервере (в пакеты – на всех клиентах)
Реализуется модульность
Уменьшается объем передаваемой информации по сети

Слайд 3

Типы хранимых процедур

Системные ХП – входят в состав SQL Server, реализуют все

Типы хранимых процедур Системные ХП – входят в состав SQL Server, реализуют
действия администрирования сервера, начинаются с sp_, хранятся в БД master. Контекст выполнения любой
Пользовательские ХП (User-Defined SP) – размещаются в пользовательских БД и выполняются в контексте только одной БД
Временные ХП – существуют только в рамках одного соединения с сервером (временно хранятся в tempDB)

Слайд 4

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

Хранимые процедуры обладают следующими преимуществами. Повторное использование кода – после создания хранимой
ее можно вызывать из любых приложений и SQL-запросов.
Сокращение сетевого трафика – вместо нескольких запросов экономнее послать серверу запрос на выполнение хранимой процедуры и сразу получить ответ.
Безопасность – действия не приведут к нарушению целостности данных, т.к. для выполнения хранимой процедуры пользователь должен иметь привилегию.
Простота доступа – хранимые процедуры позволяют инкапсулировать сложный код и оформить его в виде простого вызова.
Выполнение бизнес-логики – хранимые процедуры позволяют перенести код сохранения целостности БД из прикладной программы на сервер БД. Бизнес-логика в виде хранимых процедур не зависит от языка разработки приложения.

Слайд 5

Создание хранимых процедур

CREATE PROCEDURE имя_процедуры
( [ IN | OUT | INOUT

Создание хранимых процедур CREATE PROCEDURE имя_процедуры ( [ IN | OUT |
] имя_параметра тип[, ... ] ] )
[характеристика ...] тело_процедуры


IN – данные передаются строго внутрь хранимой процедуры;
OUT – данные передаются строго из хранимой процедуры;
INOUT – значение этого параметра как принимается во внимание внутри процеду­ры, так и сохраняет свое значение при выходе из нее.

Слайд 6

Создание хранимых процедур

DELIMITER //
CREATE PROCEDURE Hello_World()
BEGIN
SELECT(‘Hello, world!’);
END
//

Создание хранимых процедур DELIMITER // CREATE PROCEDURE Hello_World() BEGIN SELECT(‘Hello, world!’); END //

Слайд 7

Создание хранимых процедур

CREATE PROCEDURE P1()
BEGIN
DECLARE S VARCHAR(20);
SELECT weight INTO S FROM Parts

Создание хранимых процедур CREATE PROCEDURE P1() BEGIN DECLARE S VARCHAR(20); SELECT weight
ORDER BY Weight DESC LIMIT 1;
SELECT(S);
END
//

Слайд 8

Управление хранимыми процедурами

Изменение (кроме имени). Процедура заменяется полностью: ALTER PROCEDURE <имя процедуры> далее как

Управление хранимыми процедурами Изменение (кроме имени). Процедура заменяется полностью: ALTER PROCEDURE далее
в CREATE PROCEDURE
Изменение имени – при помощи системной хранимой процедуры sp_rename ‘<старое имя>’, ‘<новое имя>’ [, ‘object’] (она же используется для переименования таблиц и столбцов в таблице) например, exec sp_rename ‘GetReader’, ‘GetAllReaders’, ‘object’
Удаление хранимой процедуры DROP PROCEDURE <имя процедуры>