Добавил:
rushevamar@mail.ru Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD_Laboratornyi_774_praktikum.doc
Скачиваний:
28
Добавлен:
17.06.2021
Размер:
921.09 Кб
Скачать

If @Страна is not null

If @Город is not null

SELECT *

Into ##Регион

FROM Регион

WHERE Страна = @Страна AND Город = @Город

GO

/* Проверка работы хранимой процедуры pr_КопияРегионов */

EXEC pr_КопияРегионов

SELECT * FROM ##Регион

DROP TABLE ##Регион

EXEC pr_КопияРегионов @Город = 'Полоцк'

SELECT * FROM ##Регион

DROP TABLE ##Регион

EXEC pr_КопияРегионов DEFAULT, 'Воложин'

SELECT * FROM ##Регион

DROP TABLE ##Регион

EXEC pr_КопияРегионов 'Россия', 'Королев'

SELECT * FROM ##Регион

GO

Для внесения изменений в существующую хранимую процедуру используется та же команда, что и для ее создания, с тем лишь отличием, что вместо зарезервированного слова CREATE используется слово ALTER (см. [1], стр. 1216).

Изменим, например, текст уже существующей хранимой процедуры pr_ВыборКурсаВалюты (выбор курса валюты по ее коду):

ALTER PROCEDURE pr_ВыборКурсаВалюты

@Код CHAR(3) = 'USD',

@Курс SMALLMONEY OUTPUT

AS

SELECT @Курс = КурсВалюты

FROM Валюта

WHERE КодВалюты = @Код

GO

/* Проверка работы скорректированной хранимой процедуры pr_ВыборКурсаВалюты */

DECLARE @Code CHAR(3), @Course SMALLMONEY

SET @Code = 'EUR'

EXEC pr_ВыборКурсаВалюты @Code, @Course OUTPUT

SELECT @Code AS [Код валюты], @Course AS [Курс валюты]

EXEC pr_ВыборКурсаВалюты @Курс = @Course OUTPUT

SELECT 'USD' AS [Код валюты], @Course AS [Курс валюты]

EXEC pr_ВыборКурсаВалюты DEDAULT, @Course OUTPUT

SELECT 'USD' AS [Код валюты], @Course AS [Курс валюты]

GO

Предоставление, например членам роли Гл.бухгалтер, полномочий на выполнение хранимой процедуры pr_ВыборКурсаВалюты производится следующим образом (см. [1], стр. 254):

GRANT EXECUTE

ON pr_ВыборКурсаВалюты TO [Гл.бухгалтер] WITH GRANT OPTION

GO

Для удаления хранимой процедуры используется команда, имеющая следующий синтаксис (см. [1], стр. 1216; [2]):

DROP PROCEDURE { procedure } [ ,...n ]

Например, удалим первые три из рассмотренных выше хранимых процедур:

DROP PROCEDURE pr_ДанныеРегионов, pr_ВставкаВалюты

GO

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

Необходимо отметить, что, по аналогии с созданием временных таблиц, можно создавать также временные хранимые процедуры, обладающие той же областью видимости и тем же временем жизни. Имена локальных временных хранимых процедур начинаются символом «#», а глобальных – двумя такими символами.

SQL Server снабжен также несколькими сотнями так называемых системных хранимых процедур с широким спектром применения, которые хранятся в системной базе данных master и имеют названия, включающие в себя префикс sp_ (см. [1], стр. 1201).

В SQL Server реализована возможность использования среды Microsoft .NET Framework и ее языков программирования C#, VB.NET, J# для разработки хранимых процедур, пользовательских функций и др. объектов базы данных. Для того, чтобы создать такой объект, нужно сначала создать DLL-файл в среде разработки Visual Studio. После этого нужно импортировать созданный DLL-файл в базу данных SQL Server. И, наконец, необходимо связать созданную сборку с хранимой процедурой или функцией, которая позволит вызывать функции DLL-файла (см. [3]).