Методическое пособие к лабораторным работам по курсу «База данных» Ташкент 2022


| { CONTAINS SQL | NO SQL | READS SQL DATA


Download 3.26 Mb.
bet68/91
Sana15.11.2023
Hajmi3.26 Mb.
#1777302
TuriМетодическое пособие
1   ...   64   65   66   67   68   69   70   71   ...   91
Bog'liq
Metodichka BD

| { CONTAINS SQL | NO SQL | READS SQL DATA
| MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
тело_подпрограммы: оператор программы SQL


COMMENT — это расширение MySQL. Она используется для описания хранимой подпрограммы, и данная информация отображается с помощью оператора SHOW CREATE PROCEDURE.
LANGUAGE указывает на то, что тело процедуры написано на SQL.
NOT DETERMINISTIC. Это информационная характеристика. Процедура считается «детерминированной«, если она всегда дает тот же результат для одних и тех же входных параметров, иначе она является «не детерминированной».
CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA
CONTAINS SQL означает, что в хранимой процедуре MySQL нет никаких заявлений, которые считывают или записывают данные. Например, заявления SET @x = 1 или DO RELEASE_LOCK(‘abc’), они выполняются, но не считывают и не записывают данные. Это значение по умолчанию, если не указано другое значение характеристики.
NO SQL означает, что процедура не содержит операторов SQL.
READS SQL DATA — процедура содержит операторы, которые считывают данные (например, SELECT), но не содержит операторов, которые записывают данные.
MODIFIES SQL DATA-означает, что подпрограмма содержит операторы, которые могут записывать данные (например, INSERT или DELETE).


DEFINER_|_INVOKER}__Значение_SQL_SECURITY'>SQL SECURITY {DEFINER | INVOKER}

Значение SQL SECURITY может быть определено либо как SQL SECURITY DEFINER, либо как SQL SECURITY INVOKER. Оно указывает, выполняется ли подпрограмма с использованием привилегий аккаунта, указанного в условии DEFINER, или аккаунта пользователя, который осуществляют MySQL вызов хранимой процедуры. Этот аккаунт должен иметь разрешение на доступ к базе данных, с которой связана подпрограмма. Значение по умолчанию DEFINER. Пользователь, который запускает процедуру, должен иметь привилегию EXECUTE, если процедура выполняется в контексте безопасности DEFINER.


Все перечисленные блоки характеристик имеют значения по умолчанию. 

Пример выполнения задания для предметной области «Запись на прием»:


Для выполнения нескольких операций с данными создадим функцию, которая будет выводить сообщение. После DELIMITER нельзя использовать символ \\. Система выдаст ошибку. Поэтому используем другие символы. Функция называется hello(). Эта функция как аргумент принимает символьное значение. И так же возвращает результат типа char.

Рис. 14.1.1. Создание функции и её использование.

Вызвать функцию можно через оператор select. Конечно же как аргумент этой функции пишем текст.


Можно также использовать системные функции и получить результат.

Рис. 14.1.2. Использование созданной и системной функций.

Создадим другую функцию. При создании функций можно применять разные инструкции. В данном примере используется инструкция WHILE.








Download 3.26 Mb.

Do'stlaringiz bilan baham:
1   ...   64   65   66   67   68   69   70   71   ...   91




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling