Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Розділ 6.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
453.63 Кб
Скачать
  1. Виконання збереженої процедури .

Для виконання збереженої процедури, використовується команда:

[[ ЕХЕС [ UTE] ім ’я процедури [; номер]

[[@іи ’я_параметра=]{ значення @ш ’я_переменной}

[OUTPUT ] [DEFAULT]] [...п]

Якщо виклик збереженої процедури, не є єдиною командою в пакеті, то присутність команди EXECUTE обов'язкова. Більш того, ця команда потрібна для виклику процедури з тіла іншої процедури або тригера. Використання ключового слова OUTPUT при виклику процедури вирішується тільки для параметрів, які були оголошені при створенні процедури з ключовим словом OUTPUT.Konu ж при виклику процедури для параметра указується ключове слово DEFAULT, то буде використано значення за умовчанням. Природно, вказане слово DEFAULT дозволяється тільки для тих параметрів, для яких визначено значення за умовчанням.

З синтаксису команди EXECUTE видно, що імена параметрів можуть бути опущені при виклику процедури. Проте в цьому випадку користувач повинен указувати значення для параметрів в тому ж порядку, в якому вони перераховувалися при створенні процедури. Привласнити параметру значення за умовчанням, просто пропустивши його при перерахуванні не можна. Якщо ж потрібно опустити параметри, для яких визначено значення за умовчанням, достатньо явної вказівки імен параметрів прн виклику збереженої процедури. Більш того, у такий спосіб можна перераховувати параметри і їх значення в довільному порядку. Відзначимо, що; при виклику процедури указуються або імена параметрів із значеннями, або тільки значення без імені параметра. їх комбінування не допускається.

Приклад 6.2. Процедура.без параметрів. Розробити процедуру для отримання назв дисциплін і оцінок на екзаменах, студентом Закревським. CREATE PROC my_procl AS

SELECT course, course title Exam, mark

AS Mark stud, name FROM stud INNER JOIN (exam INNER JOIN ON stud, stud id-exam. stud id)

ON exam, course _id=course. course id WHERE stud, name = 'Закревський'

Приклад 6.3. Процедура для отримання назв дисциплін і оцінок , отрима­них студентом Закревським.

Для звернення до процедури можна використовувати команди:

EX EC туjprocl або ту_procl Процедура повертає набір даних.

Приклад 6.4. Процедура без параметрів. Створити процедуру для збіль­шення стипендії студентам третього курсу на 10%.

CREA ТЕ PROC ту_ргос2 AS

UPDATE STUD SETSTUD_STYPEND =STUD_STYPEND *1.1 WHERE StudYear='3’

Приклад 6.5. Процедура збільшення стипендії студентам третього року на­вчання на 10%.

Для звернення до процедури можна використовувати команди:

ЕХЕС ту_ргос2 або ту_ргос2 Процедура не повертає жодних даних.

Приклад 6.6. Процедура з вхідним параметром. Розробити процедуру для отримання назв дисциплін і оцінок на екзаменах, певним студентом CREATE PROC ту_ргосЗ @k VARCHAR(20)

AS

SELECT course, coursetitle Exam, mark

AS Mark stud, name FROM stud INNER JOIN (exam INNER JOIN exam ON stud. stud_id-exam. stud id)

ON exam, course_id-course. с ourse_id WHERE Stud. Name=@k Приклад 6.7. Процедура для отримання назв дисциплін і оцінок , отриманих заданим студентом.

Для звернення до процедури можна використовувати команди:

ЕХЕС ту_ргосЗ ’Закревський’ або ту_proc3 @к- ’Закревський ’

Приклад 6.8. Процедура з вхідними параметрами. Процедура збільшення стипендії студентам певного року навчання на певний %.

CREA ТЕ PROC ту_ргос4 @/ VARCHAR(2) @р FLOAT AS

UPDATE STUD SETSTUD STYPEND =STUD_STYPEND *(l+@p) WHERE StudYear-@t Для звернення до процедури можна використовувати команди:

EXEC my_proc4 '30.15 або

EXEC my_proc4 @/='i', @p-0.15

Приклад. 6.9. Використання вкладених процедур. Створити процедуру дія визначення середній бал, групи, в якій перебуває даний студент

Спочатку розробимо процедуру для визначення фірми, де працює співробітник.

CREA ТЕ PROC ту jproc 7 @п VARCHAR(20)

@f VARCHAR(20) OUTPUT

SELECT (Sjf=Group FROM stud

WHERE Name=@n Потім створимо процедуру, що підраховує загальну кількість товару, який куплений фірмою, що цікавить нас.

CREATE PROC ту_ргос8 @fam VARCHAR(20)

@avmark FLOAT OUTPUT AS

DECLARE @firm VARCHAR(20)

EXEC my_proc7 @fam,@group OUTPUT SELECT (a).avmark=Average (Mark, mark)

FROM stud INNER JOIN exam ON stud.stud_id=exam, stud id GROUP BY stud.group HA VING stud.group=@firm Приклад. 6.10. Створення процедури для визначення загальної кількості товарів, придбаних фірмою, в якій працює певний співробітник.

Виклик процедури здійснюється за допомогою команди:

DECLARE @kINT

EXEC ту_ргос8 'Закревський’,@к OUTPUT SELECT @к