Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BD-КН1.doc
Скачиваний:
18
Добавлен:
27.04.2019
Размер:
7.07 Mб
Скачать

7.3. Виконання збережуваних процедур

Збережувана процедура може бути виконана як зовнішнім додатком, так і іншою збережуваною процедурою, яка навіть може знаходитись у іншій БД та на іншому сервері. Слід зауважити, що у випадку вкладеного запуску, ім’я процедури має складатись виключно з латинських літер та інших допустимих символів.

7.4. Класифікація збережуваних процедур

7.4.1. Процедури, що виконують розрахунки

Приклад. Процедура «Банк_кількість» повертає кількість банків, що використовуються постачальниками. У процесі виконання створюється тимчасова таблиця #Банк, в яку заносяться проміжні результати. Для збереження остаточного результату використовується змінна типу int. Програмний текст:

IF object_id(' Банк_кількість ') IS NOT NULL

Drop PROCEDURE dbo.[Банк_кількість]

Go

Create PROCEDURE dbo.[Банк_кількість]

As

declare @cnt int

CREATE TABLE #Банк

([Назва_банку] varchar (128) ,

[кількість_клієнтів] int

)

INSERT INTO [#Банк] ([Назва_банку], [кількість_клієнтів])

SELECT [Назва_банку], count([код_постачальника])

FROM [Постачальник]

GROUP BY [Назва_банку]

select @cnt=count([Назва_банку])

from [#Банк]

drop table [#Банк]

select @cnt as [Кількість банків]

7.4.2. Процедури, що повертають набір записів

Приклад. Процедура «Постачальник_відобразити» повертає набір записів з таблиці «Постачальник», в яких назва постачальника «схожа» (LIKE) на шаблонну, що передається в якості параметра @ClientName. Програмний текст:

IF object_id('Постачальник_відобразити') IS NOT NULL

Drop PROCEDURE dbo.[Постачальник_відобразити]

Go

Create PROCEDURE dbo.[Постачальник_відобразити]

@ClientName varchar(128)='%'

As

SELECT *

FROM [Постачальник]

WHERE [Назва_постачальника] like @ClientName+'%'

7.4.3. Адміністративні процедури

Приклад. Процедура «Роль_створити» створює роль на сервері, ім’я якої вказано в якості параметра процедури. Програмний текст:

IF object_id('Роль_створити') IS NOT NULL

Drop PROCEDURE dbo.[Роль_створити]

Go

Create PROCEDURE dbo.[Роль_створити]

@RoleName varchar(32)

As

if not exists (select * from dbo.sysusers where name = @RoleName)

EXEC sp_addrole @RoleName

7.5. Знищення збережуваних процедур

У Query Analyzer збережувана процедура знищується за допомогою інструкції DROP PROCEDURE. За допомогою однієї такої інструкції може бути вилучено кілька процедур. Імена процедур, що видаляються, вказуються через кому після ключового слова DROP PROCEDURE. Синтаксис команди:

DROP PROCEDURE ім'я_процедури_1 [ , ..., ім'я_лроцедури_п]

Кілька версій процедури не можуть бути вилучені селективно. Усі версії з однаковим ім'ям знищуються одночасно. При цьому в інструкції DROP PROCEDURE ім'я процедури вказується без номера версії.

У наступному прикладі знищуються всі версії процедури «накладна_зведена_інформація», в разі якщо вона існує:

If object_id('накладна_зведена_інформація') is not null

Drop procedure [накладна_зведена_інформація]

Знищити збережувану процедуру можна за допомогою контекстного меню у Query Analyzer чи Enterprise Manager, обравши відповідне меню «Delete» цільового обєкта.

Питання до теми

  1. Для чого призначені збережувані процедури?

  2. Що являють собою збережувані процедури?

  3. Як створити збережуваноу процедуру?

  4. Як активізувати збережувану процедуру?

  5. Як можна класифікувати збережувані процедури?

  6. Які існують способи виклику збережуваної процедури?

  7. Як знищити збережувану процедуру?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]