Разделы презентаций


Заняття 8. Збережені процедури. Користувацькі функції

Содержание

Основи збережених процедурЗбережена процедура – попередньо скомпільований набір операторів мови SQL, який зберігається на сервері. Збережені процедури є основним засобом оформлення часто розв’язуваних задач, який забезпечує їх ефективне виконання, оскільки інструкції

Слайды и текст этой презентации

Слайд 1Заняття 8. Збережені процедури. Користувацькі функції

Заняття 8. Збережені процедури. Користувацькі функції

Слайд 2Основи збережених процедур
Збережена процедура – попередньо скомпільований набір операторів мови

SQL, який зберігається на сервері.
Збережені процедури є основним засобом

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

Основи збережених процедурЗбережена процедура – попередньо скомпільований набір операторів мови SQL, який зберігається на сервері. Збережені процедури

Слайд 3Переваги збережених процедур у порівнянні з кодом, який зберігається локально

на клієнтських комп’ютерах
Збережені процедури реєструються на сервері.
Збережені процедури можуть

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

Переваги збережених процедур у порівнянні з кодом, який зберігається локально на клієнтських комп’ютерах Збережені процедури реєструються на

Слайд 4Збережені процедури підтримують модульне програмування. Процедуру можна створити один раз

і за необхідністю викликати її будь-яку кількість раз. Це робить

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

Збережені процедури підтримують модульне програмування. Процедуру можна створити один раз і за необхідністю викликати її будь-яку кількість

Слайд 5Загальний синтаксис створення збереженої процедури
CREATE
[DEFINER = { user |

CURRENT_USER }]
PROCEDURE ([ [,...]])
[ ...]

Параметр

процедури:
[ IN | OUT | INOUT ] <ім'я параметра> <тип даних>
Загальний синтаксис створення збереженої процедури CREATE[DEFINER = { user | CURRENT_USER }]PROCEDURE ([ [,...]])[ ...] Параметр процедури:[

Слайд 6Правила проектування збережених процедур
Інструкція CREATE PROCEDURE може включати будь-яку кількість

інструкцій SQL будь-якого типу, окрім наступних:
CREATE або ALTER FUNCTION
CREATE TRIGGER
CREATE

або ALTER PROCEDURE
CREATE або ALTER VIEW
CREATE AGGREGATE; CREATE RULE; CREATE DEFAULT; CREATE SCHEMA;
SET PARSEONLY; SET SHOWPLAN_ALL; SET SHOWPLAN_TEXT; SET SHOWPLAN_XML;
USE
Усі решта об’єктів можна створювати всередині збереженої процедури.
До створеного в процедурі об’єкту можна звертатись, як і до будь-якого іншого об’єкту БД.

Правила проектування збережених процедурІнструкція CREATE PROCEDURE може включати будь-яку кількість інструкцій SQL будь-якого типу, окрім наступних:CREATE або

Слайд 7В збереженій процедурі можна звертатись до тимчасових таблиць. Якщо в

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

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

Слайд 8Збережену процедуру можна створити лише в поточній БД.
Для створення збережених

процедур необхідно мати дозвіл для CREATE PROCEDURE в базі даних

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

Збережену процедуру можна створити лише в поточній БД.Для створення збережених процедур необхідно мати дозвіл для CREATE PROCEDURE

Слайд 9Параметри збережених процедур
CREATE PROCEDURE proc (): порожній список параметрів
CREATE PROCEDURE

proc (IN varname DATA-TYPE): один вхідний параметр. (Слово IN необов'язкове

тому, що параметри по замовчуванню – вхідні).
CREATE PROCEDURE proc (OUT varname DATA-TYPE): один вихідний параметр.
CREATE PROCEDURE proc (INOUT varname DATA-TYPE): один параметр, що одночасно є вхідним і вихідним.

Параметри збережених процедурCREATE PROCEDURE proc (): порожній список параметрівCREATE PROCEDURE proc (IN varname DATA-TYPE): один вхідний параметр.

Слайд 10Створення збереженої процедури
Приклад 1. (збережена процедура із порожнім параметром). Створити

збережену процедуру, яка виводить усі дані із таблиці Sellers:
CREATE PROCEDURE

proc()
BEGIN
SELECT * FROM Sellers;
END;

Створення збереженої процедуриПриклад 1. (збережена процедура із порожнім параметром). Створити збережену процедуру, яка виводить усі дані із

Слайд 11Приклад 2. (збережена процедура із вхідним параметром). Створити збережену процедуру,

яка виводить усі дані із таблиці про покупця із номером

1002:
CREATE PROCEDURE proc2(IN selnum INT)
BEGIN
SELECT * FROM Sellers WHERE snum = selnum;
END;

Приклад 2. (збережена процедура із вхідним параметром). Створити збережену процедуру, яка виводить усі дані із таблиці про

Слайд 12Приклад 3. (збережена процедура із вихідним параметром). Створити збережену процедуру,

яка виводить кількість продавців, які містяться у таблиці Sellers:
CREATE PROCEDURE

proc3(OUT selcount INT)
BEGIN
SELECT COUNT (snum) FROM Sellers INTO selcount;
END;

Приклад 3. (збережена процедура із вихідним параметром). Створити збережену процедуру, яка виводить кількість продавців, які містяться у

Слайд 13Змінні у збережених процедурах
Змінні у збережених процедурах задаються за допомогою

команди DECLARE.
Після того, як змінна була оголошена можна задати їй

значення за допомогою команд SET або SELECT.


Змінні у збережених процедурахЗмінні у збережених процедурах задаються за допомогою команди DECLARE.Після того, як змінна була оголошена

Слайд 14Приклад 4. (збережена процедура із використанням змінних). Створити збережену процедуру,

яка виводить операції купівлі-продажу, що були здійснені в поточному місяці.
CREATE

PROCEDURE proc4()
BEGIN
DECLARE last_month DATE;
SET last_month = CURRENT_DATE();
SELECT * FROM orders
WHERE MONTH(odate) = MONTH(last_month) AND YEAR(odate) = YEAR(last_month);
END;
Приклад 4. (збережена процедура із використанням змінних). Створити збережену процедуру, яка виводить операції купівлі-продажу, що були здійснені

Слайд 15Виконання збережених процедур в MySQL
Використовується команда CALL.
Щоб викликати збережену

процедуру, необхідно після команди CALL вказати назву процедури, а в

дужках вказати параметри (змінні або значення).
Для вхідних параметрів в дужках вказуються значення, для вихідних – змінні.
Для виводу значення вихідного параметру, що міститься у змінній необхідно використати команду SELECT.
CALL proc (param1, param2, ....);
CALL proc1(10 , 'string parameter' , @parameter_var);
Виконання збережених процедур в MySQLВикористовується команда CALL. Щоб викликати збережену процедуру, необхідно після команди CALL вказати назву

Слайд 16Модифікація збереженої процедури
Якщо необхідно змінити інструкції або параметри збереженої процедури,

можна видалити її і створити заново. При цьому всі права

доступу будуть втрачені.
При безпосередньому редагуванні можна змінити інструкції і параметри, а права доступу залишаться, а також залишаться залежні від неї процедури або тригери. Для цього використовується команда ALTER PROCEDURE.
Зміна імені або визначення збереженої процедури може призвести до того, що усі залежні від неї об’єкти при виконанні будуть повертати помилку, якщо вони не були оновлені у відповідності зі змінами, внесеними в процедуру.

Модифікація збереженої процедуриЯкщо необхідно змінити інструкції або параметри збереженої процедури, можна видалити її і створити заново. При

Слайд 17Видалення збереженої процедури
Коли збережена процедура не потрібна, її можна видалити

командою DROP PROCEDURE.
Якщо на видалену процедуру посилається інша збережена процедура,

то при її виклику СУБД відобразить повідомлення про помилку. Однак, якщо замість видаленої визначити іншу збережену процедуру з таким же ім’ям і параметрами, то процедури, які на неї посилаються будуть виконуватись успішно.
Видалення збереженої процедуриКоли збережена процедура не потрібна, її можна видалити командою DROP PROCEDURE.Якщо на видалену процедуру посилається

Слайд 18Користувацькі функції
Збережені процедури відрізняються від функцій тим, що вони не

повертають значення на місце своїх імен, і їх не можна

безпосередньо використовувати у виразах.
Функція являє собою підпрограму SQL, яка повертає значення.
Користувацька функція не може виконувати дії, які змінюють стан бази даних.
Користувацькі функції можуть викликатись із запиту.
Користувацькі функціїЗбережені процедури відрізняються від функцій тим, що вони не повертають значення на місце своїх імен, і

Слайд 19Використання користувацьких функцій
в інструкціях SQL, наприклад SELECT;
у програмах, які викликають

функцію;
у визначенні іншої користувацької функції;
для параметризації віртуальної таблиці (view);
для визначення

стовпця таблиці;
для визначення обмеження CHECK на стовпець;
для заміни збереженої процедури;

Використання користувацьких функційв інструкціях SQL, наприклад SELECT;у програмах, які викликають функцію;у визначенні іншої користувацької функції;для параметризації віртуальної

Слайд 20Загальний синтаксис створення користувацької функції
CREATE
[DEFINER = { user |

CURRENT_USER }]
FUNCTION ([ [,...]])
RETURNS
[...]



Параметр функції:
<ім'я параметра> <тип даних>
Загальний синтаксис створення користувацької функції CREATE[DEFINER = { user | CURRENT_USER }]FUNCTION ([ [,...]])RETURNS [...] Параметр функції:

Слайд 21Створення користувацької функції
Приклад 5. Створити користувацьку функцію, яка виводить кількість

продавців, які містяться у таблиці Sellers:
CREATE FUNCTION func()
RETURNS INT
BEGIN
DECLARE selcount

INT;
SELECT COUNT(snum) FROM Sellers INTO selcount;
RETURN selcount;
END;

Створення користувацької функціїПриклад 5. Створити користувацьку функцію, яка виводить кількість продавців, які містяться у таблиці Sellers:CREATE FUNCTION

Слайд 22Оператори управління потоком даних
MySQL підтримує оператори IF, CASE, ITERATE, LEAVE

LOOP, WHILE і REPEAT для управління потоками в межах збереженої

процедури.
Багато з цих операторів містять інші інструкції, як визначено специфікаціями MySQL.
Такі оператори можуть бути вкладені. Наприклад, IF міг би містити цикл часу, який безпосередньо містить WHILE, який у свою чергу включає в себе оператор CASE.
Цикли FOR в MySQL не забезпечені.
Оператори управління потоком данихMySQL підтримує оператори IF, CASE, ITERATE, LEAVE LOOP, WHILE і REPEAT для управління потоками

Слайд 23Загальний синтаксис умовного оператора IF
IF THEN

операторів виконання>
[ELSEIF THEN ] ...
[ELSE

операторів виконання>]
END IF
Загальний синтаксис умовного оператора IF IF THEN [ELSEIF THEN ] ...[ELSE ]END IF

Слайд 24Використання оператора IF
Приклад 6. (Із використанням оператора IF) Визначити статус

продавців відповідно до сум, які вони виручили за операції купівлі-продажу:
CREATE

PROCEDURE Sel_Status (IN selnum INT, OUT selstatus VARCHAR(10))
BEGIN
DECLARE sum_amt double;
SELECT SUM(amt) INTO sum_amt FROM orders WHERE snum = selnum;
IF(sum_amt) > 10000 THEN SET selstatus = 'Excellent';
ELSEIF ((sum_amt) <= 10000 AND (sum_amt) >= 4000) THEN SET selstatus = 'Good';
ELSE SET selstatus = 'Bad';
END IF;
END;

Використання оператора IFПриклад 6. (Із використанням оператора IF) Визначити статус продавців відповідно до сум, які вони виручили

Слайд 25Загальний синтаксис умовного оператора CASE
CASE
WHEN THEN


[WHEN THEN ] ...
[ELSE

<список операторів виконання>]
END CASE
Загальний синтаксис умовного оператора CASE CASE WHEN THEN [WHEN THEN ] ...[ELSE ]END CASE

Слайд 26Використання оператора CASE
Приклад 6 (продовж.). (Із використанням оператора CASE) Визначити

статус продавців відповідно до сум, які вони виручили за операції

купівлі-продажу:
CREATE PROCEDURE Sel_Status (IN selnum INT, out selstatus varchar(10))
BEGIN
DECLARE sum_amt double;
SELECT SUM(amt) INTO sum_amt FROM orders WHERE snum = selnum;
CASE
WHEN (sum_amt > 10000) THEN SET selstatus = 'Excellent';
WHEN ((sum_amt) <= 10000 AND (sum_amt) >= 4000) THEN SET selstatus = 'Good';
ELSE SET selstatus = 'Bad';
END CASE;
END;

Використання оператора CASEПриклад 6 (продовж.). (Із використанням оператора CASE) Визначити статус продавців відповідно до сум, які вони

Слайд 27Загальний синтаксис оператора циклу WHILE
[:] WHILE

DO

END WHILE []

Загальний синтаксис оператора циклу WHILE [:] WHILE DO	END WHILE []

Слайд 28Використання оператора WHILE
CREATE PROCEDURE dowhile(IN p1 INT, OUT p2

INT)
BEGIN
SET @x = 0;
WHILE (@x

p2;
SET @x = @x + 1;
END WHILE;
END
Використання оператора WHILE CREATE PROCEDURE dowhile(IN p1 INT, OUT p2 INT)BEGIN	SET @x = 0;	WHILE (@x

Слайд 29Загальний синтаксис оператора циклу REPEAT
[:] REPEAT

UNTIL


END REPEAT []

Загальний синтаксис оператора циклу REPEAT [:] REPEAT	UNTIL END REPEAT []

Слайд 30Використання оператора REPEAT
CREATE PROCEDURE dorepeat(IN p1 INT, OUT p2

INT)
BEGIN
SET @x = 0;
REPEAT
SELECT @x INTO p2;
SET @x = @x

+ 1;
UNTIL @x > p1 END REPEAT;
END
Використання оператора REPEAT CREATE PROCEDURE dorepeat(IN p1 INT, OUT p2 INT)BEGIN	SET @x = 0;	REPEAT		SELECT @x INTO p2;		SET

Слайд 31Загальний синтаксис оператора циклу LOOP
[:] LOOP

END

LOOP []

Щоб запустити цикл необхідно використати оператор ITERATE

(може також використовуватися із іншими операторами циклу).

Щоб вийти із циклу необхідно використати оператор LEAVE <мітка> (може також використовуватися із іншими операторами циклу).

Загальний синтаксис оператора циклу LOOP [:] LOOP	END LOOP []Щоб запустити цикл необхідно використати оператор ITERATE (може також

Слайд 32Використання оператора LOOP
CREATE PROCEDURE doiterate(IN p1 INT, OUT p2

INT)
BEGIN
SET @x = 0;
label1: LOOP
SET @x = @x + 1;
IF

@x < 5 THEN
ITERATE label1;
END IF;
LEAVE label1;
END LOOP label1;
SELECT @x into p2;
END;
Використання оператора LOOP CREATE PROCEDURE doiterate(IN p1 INT, OUT p2 INT)BEGIN	SET @x = 0;	label1: LOOP		SET @x =

Слайд 33Завдання 1. Створити збережені процедури для власної бази даних
Створити 1

збережену процедуру без параметрів;
Створити 2 збережені процедури із вхідним параметром;
Створити

1 збережену процедуру із вихідним параметром;
Створити 2 користувацькі функції.
Завдання 1. Створити збережені процедури для власної бази данихСтворити 1 збережену процедуру без параметрів;Створити 2 збережені процедури

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика