Слайд 1Современные технологии баз данных и анализа информации -1
Инструкции языка SQL
для управления объектами СБД
DDL-2
Слайд 2Типы хранимых процедур БД
1. Системные хранимые процедуры
Предназначены для выполнения
различных административных действий. Практически все действия по администрированию сервера выполняются
с их помощью.
Можно сказать, что системные ХП являются интерфейсом, обеспечивающим работу с системными таблицами.
Системные хранимые процедуры имеют префикс sp_, хранятся в системной БД и могут быть вызваны в контексте любой другой БД.
Слайд 3Типы хранимых процедур БД
2. Пользовательские хранимые процедуры
Реализуют те или
иные действия. ХП – полноценный объект БД.
Вследствие этого каждая
ХП располагается в конкретной базе данных, где и выполняется.
Слайд 4Типы хранимых процедур БД
3. Временные хранимые процедуры
Существуют лишь некоторое
время, после чего автоматически уничтожаются сервером. Они делятся на локальные
и глобальные. Локальные временные ХП могут быть вызваны только из того соединения, в котором созданы. При создании такой ХП ей необходимо дать имя, начинающееся с одного символа #. Как и все временные объекты, ХП этого типа автоматически удаляются при отключении пользователя, перезапуске или остановке сервера.
Глобальные временные ХП доступны для любых соединений сервера, на котором имеется такая же ХП. Для ее определения достаточно дать ей имя, начинающееся с символов ##. Удаляются эти ХП при перезапуске или остановке сервера, а также при закрытии соединения, в контексте которого они были созданы.
Слайд 5
Создание, изменение хранимых процедур
Создание ХП предполагает решение следующих задач:
планирование прав доступа. При создании ХП следует учитывать, что она
будет иметь те же права доступа к объектам БД, что и создавший ее пользователь;
определение параметров ХП и выходными параметрами; - разработка кода ХП. Код ХП может содержать последовательность любых команд SQL, включая вызов других ХП.
Синтаксис:
{CREATE | ALTER } PROC[EDURE] имя_процедуры [;номер] [{@имя_параметра тип_данных } [VARYING ] [=DEFAULT][OUTPUT] ][,...n] [WITH { RECOMPILE | ENCRYPTION | RECOMPILE, ENCRYPTION }] [FOR REPLICATION] AS sql_оператор [...n]
Слайд 6
Создание, изменение хранимых процедур
Используя префиксы sp_, #, ##, создаваемую
ХП можно определить в качестве системной или временной. Как видно
из синтаксиса команды, не допускается указывать имя владельца, которому будет принадлежать создаваемая процедура, а также имя БД, где она должна быть размещена. Таким образом, чтобы разместить создаваемую ХП в конкретной БД, необходимо выполнить команду CREATE PROCEDURE в рамках этой БД.
При обращении из тела ХП к объектам той же БД можно использовать укороченные имена, т. е. без указания имени БД.
Когда же требуется обратиться к объектам, расположенным в других БД, указание имени базы данных обязательно.
Слайд 7
Создание, изменение хранимых процедур
Для передачи входных и выходных данных
в создаваемой ХП имена параметров должны начинаться с символа @.
В одной ХП можно задать множество параметров, разделенных запятыми.
В теле ХП не должны применяться локальные переменные, чьи имена совпадают с именами параметров этой ХП.
Для определения типа данных параметров ХП подходят любые типы данных SQL, включая определенные пользователем. Однако тип данных CURSOR может быть использован только как выходной параметр ХП, т.е. с указанием ключевого слова OUTPUT.
Слайд 8
Создание, изменение хранимых процедур
Наличие ключевого слова OUTPUT означает, что
соответствующий параметр предназначен для возвращения данных из ХП. Однако это
вовсе не означает, что параметр не подходит для передачи значений в ХП. Указание ключевого слова OUTPUT предписывает серверу при выходе из ХП присвоить текущее значение параметра локальной переменной, которая была указана при вызове ХП в качестве значения параметра. Отметим, что при указании ключевого слова OUTPUT значение соответствующего параметра при вызове ХП может быть задано только с помощью локальной переменной. Не разрешается использование любых выражений или констант, допустимое для обычных параметров. Ключевое слово VARYING применяется совместно с параметром OUTPUT, имеющим тип CURSOR. Оно определяет, что выходным параметром будет результирующее множество.
Слайд 9
Создание, изменение хранимых процедур
Ключевое слово DEFAULT представляет собой значение,
которое будет принимать соответствующий параметр по умолчанию. Т. о., при
вызове ХП можно не указывать явно значение соответствующего параметра.
Так как сервер кэширует план исполнения запроса и компилированный код, при последующем вызове ХП будут использоваться уже готовые значения.
Однако в некоторых случаях все же требуется выполнять перекомпиляцию кода ХП. Указание ключевого слова RECOMPILE предписывает системе создавать план выполнения ХП при каждом ее вызове.
Слайд 10
Создание, изменение хранимых процедур
Параметр FOR REPLICATION востребован при репликации
данных и включении создаваемой ХП в качестве статьи в публикацию.
Ключевое слово ENCRYPTION предписывает серверу выполнить шифрование кода ХП, что может обеспечить защиту от использования авторских алгоритмов, реализующих работу ХП. Ключевое слово AS размещается в начале собственно тела ХП. В теле ХП могут применяться практически все команды SQL, объявляться транзакции, устанавливаться блокировки и вызываться другие ХП.
Выход из ХП можно осуществить посредством команды RETURN.
Слайд 11
Выполнение хранимой процедуры
Для выполнения хранимой процедуры используется команда:
[[
EXEC [ UTE] имя_процедуры [;номер] [[@имя_параметра=]{значение | @имя_переменной} [OUTPUT ]|[DEFAULT
]][,...n]
Удаление хранимой процедуры
DROP PROCEDURE {имя_процедуры} [,...n]
Слайд 12
Пример создание и вызова ХП
Пример создания ХП c входными
параметрами:
CREATE PROCEDURE Count_Books_Title @Count_pages AS INT, @Title AS CHAR(10) AS
SELECT COUNT(Code_book) FROM Books WHERE Pages>=@Count_pages AND Title_book LIKE @Title
GO
Пример запуска ХП c входными параметрами:
EXEC Count_Books_Title 100, 'П%'