Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КСК_БД-2 методвказівки-2015-NEW.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Insert into Топ_Продавці values (201, 'Гриценко', 'Запоріжжя', 250);

Ця команда виконається й у базову таблицю буде вставлений запис, але до подання запис не буде доданий, тому що значення Рейтінг не рівно 300.

Для того, щоб відслідковувати такі ситуації, можна скористатися реченням WITH CHECK OPTION, яке вставляється в команду створення подання.

CREATE VIEW Топ_Продавці

AS

SELECT *

FROM Продавці

WHERE Рейтінг=300;

WITH CHECK OPTION;

Тепер така команда INSERT буде відхилена.

Для створення подання треба у вкладці «SQL» інтерфейсу PHPmyAdmin ввести текст відповідного запиту на створення (рис. 4.1):

Рисунок 4.1 – Вікно створення подання

Контрольні питання

  • Яка різниця між базовим і віртуальним відношеннями?

  • Що таке подання, його призначення?

  • Як створити подання?

  • Як використовується операція з’єднання при створенні подання?

  • Для чого використовується речення WITH CHECK OPTION?

5 Лабораторна робота № 5 «Вбудовані процедури та курсори»

5.1 Мета роботи

Метою роботи є придбання навичок створення та використання вбудованих процедур і курсорів в середовищі MySQL.

5.2 Завдання до лабораторної роботи

5.2.1 Ознайомитися зі змістом пункту 5.3 даних методичних указівок.

5.2.2 Згідно з отриманим завданням створити відповідні об’єкти БД. Навести приклади їхнього використання.

5.3 Основні теоретичні відомості

5.3.1 Вбудовані процедури

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

Створення збереженої процедури

CREATE PROCEDURE `p2` () 

LANGUAGE SQL 

DETERMINISTIC 

SQL SECURITY DEFINER 

COMMENT 'A procedure' 

BEGIN 

    SELECT 'Hello World !'; 

END;/ 

Перша частина коду створює збережену процедуру. Наступна - містить необов'язкові параметри. Потім йде назва та, нарешті, тіло самої процедури.

Назви збережених процедур чутливі до регістру. Не можна створювати кілька процедур з однаковою назвою. Усередині збереженої процедури не може бути виразів, які змінюють саму базу даних.

Характеристики збереженої процедури:

  • Language: з метою забезпечення переносимости, за замовчуванням зазначена мова SQL;

  • Deterministic: якщо процедура увесь час повертає той самий результат, і приймає ті ж самі вхідні параметри. Це для реплікації й процесу реєстрації. Значення за замовчуванням - NOT DETERMINISTIC;

  • SQL Security: під час виклику йде перевірка прав користувача. INVOKER - це користувач, що викликає збережену процедуру. DEFINER - це “творець” процедури. Значення за замовчуванням – DEFINER;

  • Comment: з метою документування, за замовчуванням - "".

Виклик збереженої процедури

Для виклику збереженої процедури необхідно ввести ключове слово CALL, потім назву процедури, а в дужках указати параметри (змінні або значення). Дужки обов'язкові.

CALL stored_procedure_name (param1, param2, ....) 

CALL procedure1(10, 'string parameter', @parameter_var);

Видалення збереженої процедури

DROP PROCEDURE IF EXISTS p2;

Вираз IF EXISTS відловлює помилку в разі відсутності такої процедури .

Параметри

Параметри можна передавати в збережену процедуру в такий спосіб:

  • CREATE PROCEDURE proc1 (): порожній список параметрів;

  • CREATE PROCEDURE proc1 (IN varname DATA-TYPE): один вхідний параметр. Слово IN необов'язково, тому що за замовчуванням параметри визначаються як вхідні (IN);

  • CREATE PROCEDURE proc1 (OUT varname DATA-TYPE): один параметр, що повертається.

  • CREATE PROCEDURE proc1 (INOUT varname DATA-TYPE): один параметр, одночасно вхідний, та такий, що повертається.

Аналогічно можна задавати кілька параметрів різних типів.

Змінні

Синтаксис оголошення змінної виглядає так:

DECLARE ім'я_змінної тип_даних DEFAULT значення за замовчуванням

Наприклад,

DECLARE a, b INT DEFAULT 5; 

DECLARE str VARCHAR(50); 

DECLARE today TIMESTAMP DEFAULT CURRENT_DATE; 

DECLARE v1, v2, v3 TINYINT;

Робота зі змінними

Після оголошення змінної їй можна задавати значення за допомогою команд SET або SELECT. Наприклад,

SET str = 'I am a string ';

SELECT CONCAT(str,paramstr), today FROM table2 

Структури керування потоками

Mysql підтримує конструкції IF, CASE, ITERATE, LEAVE LOOP, WHILE і REPEAT для керування потоками в межах збереженої процедури (докладніше в [7]).