Лекція
5. Створення динамічних запитів за допомогою збережених процедур.
Мета: вивчити процес
створення динамічних запитів за допомогою збережених процедур
Збережена процедура - SQL запит, який
має параметри, тобто він виконується як звичайна процедура (ми задаємо її ім'я
і передаємо в збережену процедуру значення параметрів.) Залежно від значення
параметрів процедури ми отримуємо той чи інший результат запиту.
Зауваження.
У SQL сервері збережені процедури реалізують динамічні запити, що виконуються
на стороні сервера.
Розглянемо створення збережених процедур за допомогою команд мови SQL. Щоб відобразити збережені процедури робочої БД панелі "Object Explorer" потрібно виділити пункт "Хранимые процедуры". Щоб створити нову процедуру за допомогою команд мови SQL потрібно клацнути ЛКМ по кнопці
на
панелі інструментів. У робочій області вікна сервера з'явиться вкладка SQLQuery1.sql, де потрібно набрати код
нової процедури, який має наступний синтаксис:
СREATE PROCEDURE <Імя процедури>
[@<Параметр1> <Тип1>[=<Значення1>],
@<Параметр2> <Тип2>[=<Значення2>], …]
[WITH ENCRYPTION]
AS <Команди SQL>
Тут:
·
Імя процедури
- ім'я створюваної збереженої процедури.
·
Параметр1, Параметр2,
... - параметри передаються в процедуру.
·
Значення1, Значення2
... - значення параметрів за замовчуванням.
·
Тип1, Тип2, ... -
типи даних параметрів.
·
WITH ENCRYPTION -
включає шифрування даних.
·
Команди SQL -
SQL запит, який виконується при запуску процедур.
Зауваження: SQL запит включає в
себе параметри, якщо параметри порівнюються з якими те полями або виразами, то
вони повинні мати точно такий же тип даних як ці поля або виразу.
Зауваження:
Після створення процедура поміщається в розділ Хранимые процедуры поточної БД на панелі "Object Explorer". Якщо двічі клацнути по
процедурі ЛКМ, то вона відкриється для редагування на вкладці "SQL Запрос".
Щоб подивитися
інформацію про збереженій процедурі необхідно виконати команду:
EXEC SP_HELPTEXT <Імя процедури>
Збережені процедури
можуть бути запущені наступною командою
EXEC <Імя процедури> [<параметр1>,
<параметр2>, ...]
Тут:
·
<Імя процедури> - ім'я виконуваної
процедури.
·
Параметр1,
параметр2, ... - значення параметрів.
Приклад: Створення
збереженої процедури, який виводить ім'я студентів, у яких середній бал більше
заданої величини:
CREATE PROCEDURE СрБАЛЛ
X Real
AS
SELECT *
FROM Студент
WHERE (Оцінка1+ Оцінка2 + Оцінка3) / 3>X
Команда виклику
наведеної вище процедури виглядає наступним чином:
EXEC СрБАЛЛ 4
Команда виводить
всіх студентів, у яких середній бал більше 4.
Контрольні питання