бд. бд БАНК_ЗАДАНИЙ. Удаленный доступ к базе с любого хоста
Скачать 0.91 Mb.
|
РАБОТА 23.О «Создание хранимых процедур»
Время выполнения задания – 180 минут. Уровень сложности работы – 3 Необходимое оборудование, материалы, документация: ПК, МУ по выполнению практических работ. КРИТЕРИИ ОЦЕНИВАНИЯ РАБОТЫ КРИТЕРИИ ВЫСТАВЛЕНИЯ ОЦЕНКИ
СОДЕРЖАНИЕ РАБОТЫ Создание хранимых процедур. 23.Т Типовое задание Создать хранимую процедуру без параметров. Создать хранимую процедуру с одним параметром типа IN. Создать хранимую процедуру c двумя параметрами типа IN и OUT. Создать хранимую процедуру с параметром типа INOUT. ХОД ВЫПОЛНЕНИЯ ТИПОВОГО ЗАДАНИЯ 23.Т Создать хранимую процедуру без параметров. DELIMITER // CREATEPROCEDUREproc() BEGIN SELECT Name_prod FROM Product WHERE price=1000; INSERT INTO Product (Name_prod, price) value(“ Огурцы”, 250); END// DELIMITER; CALL proc(); Создать хранимую процедуру с одним параметром типа IN. DELIMITER // CREATEPROCEDUREproc_IN (INvar1 INT) BEGIN SELECT Name_prod FROM Product WHERE price=var1 ; INSERT INTO Product (Name_prod, price) value(“ Огурцы”, var1); END// DELIMITER; CALL proc_IN(120); 2.1 ИспользованиециклаWhileвпроцедуре DELIMITER $$ CREATE PROCEDURE my_proc_WHILE(IN n INT) BEGIN SET @sum = 0; SET @x = 1; WHILE @x DO IF mod(@x, 2) <> 0 THEN SET @sum = @sum + @x; END IF; SET @x = @x + 1; END WHILE; END$$ Вызовпроцедуры CALL my_proc_WHILE(5); SELECT @sum;
CALL my_proc_WHILE(10); SELECT @sum;
CALL my_proc_WHILE(3); SELECT @sum;
Написать процедуру с входнымиIN и выходными параметрамиOUT (минимум по одному), в теле каждой использовать один условный выбор и (или) один цикл. По условиям задания, в функции и в процедуре нужно использовать цикл и условный оператор. В процедуре используем условный оператор IF. Создадим процедуру, которая будет получать на вход ID Продукта и планируемое число продаж для этого продукта. Если план выполнен, то процедура возвращает “YES”, если продано меньше единиц продукта, то “NO”. DELIMITER// CREATE PROCEDURE product_orders(IN productID int, IN plan int, OUT ismade char(3)) BEGIN DECLARE productcount int; SELECT sum(`order-product`.Amount) INTO productcount FROM order, order-product WHERE order.ID_order = order-product.Order_ID AND order-product.Product_ID = productID; IF (productcount >= plan) THEN SET ismade = "YES"; ELSE SET ismade = "NO"; END IF; END// DELIMITER; Вызов процедуры Сначала установим значения для входных параметров. SET @productID = 7; SET @plan = 4; Теперь вызовем процедуру. CALL product_orders(@productID, @plan, @ismade); И получим значение выходного параметра процедуры, т.е. результат ее выполнения. SELECT @ismade; Процедуру можно вызвать и без установки параметров. CALL product_orders(7, 7, @ismade); Создать хранимую процедуру с параметром типа INOUTи INT В следующем примере показана простая хранимая процедура MySQL, которая использует параметр INOUT и параметр IN. Пользователь предоставляет ‘M‘ или ‘F‘ через параметр IN (emp_gender) для подсчета количества сотрудников мужского или женского пола из таблицы user_details. Параметр INOUT (mfgender) возвращает результат пользователю. CALLmy_proc_OUT(@M) DELIMITER$$ CREATE PROCEDURE my_proc_INOUT (INOUT mfgender INT, IN emp_gender CHAR(1)) BEGIN SELECT COUNT(gender) INTO mfgender FROM user_details WHERE gender = emp_gender; END$$ DELIMITER; Теперь проверяем количество сотрудников мужского и женского пола в указанной таблице. CALL my_proc_INOUT(@C,'M'); SELECT @C;
CALL my_proc_INOUT(@C,'F'); SELECT @C;
Создать хранимую процедуру с параметром типа INOUT и INTс оператором Caseв теле цикла Подсчитаем количество сотрудников, удовлетворяющих следующим условиям: MIN_SALARY > 10000 MIN_SALARY < 10000 MIN_SALARY = 10000 DELIMITER $$ CREATE PROCEDURE `hr`.`my_proc_CASE` (INOUT no_employees INT, IN salary INT) BEGIN CASE WHEN (salary>10000) THEN (SELECT COUNT(job_id) INTO no_employees FROM jobs WHERE min_salary>10000); WHEN (salary<10000) THEN (SELECT COUNT(job_id) INTO no_employees FROM jobs WHERE min_salary<10000); ELSE (SELECT COUNT(job_id) INTO no_employees FROM jobs WHERE min_salary=10000); ЗАДАНИЕ 23.1 Написать хранимые процедуры в соответствии со своим вариантом.
|