Съхраняваните в MySQL функции се използват за капсулиране на изчисления или операции със записи и полета с данни, които са взети от SQL заявка и са общи задачи или бизнес правила.
Голямо предимство е, че те могат да се използват многократно и езикът за програмиране, в който се разработват функциите, е чрез SQL изрази и условни или повтарящи се структури.
За разлика от съхранена процедура, можете да използвате съхранена функция в SQL изрази, където използвате израз, който ви позволява да създавате условни правила.
Нека да видим пример за създаване на база данни на училище:
СЪЗДАВАНЕ НА БАЗА ДАННИ `колеж`След това създаваме таблица с резултатите от студентските тестове
- - Структура на таблица за таблица `examnotes` - CREATE TABLE` examnotes` (` id` INT (11) NOT NULL AUTO_INCREMENT, `idalumno` INT (11) NOT NULL,` material id` INT (11) NOT NULL, `note1 `DECIMAL (10,2) NOT NULL,` note2` DECIMAL (10,2) NOT NULL, `note3` DECIMAL (10,2) NOT NULL,` средно` DECIMAL (10,2) NOT NULL, `state` VARCHAR (100) NULL DEFAULT NULL, PRIMARY KEY (`id`)) COLLATE = 'latin1_swedish_ci' ENGINE = InnoDB - Индекси на таблица` notaseams` - ALTER TABLE` notasetest` ДОБАВЯНЕ НА ПРЕДВАРИТЕЛЕН КЛЮЧ (`id`); След това добавяме някои данни към таблицата examnotes - Дъмп на данни за таблицата `notasensam` INSERT INTO` нотационен изпит` (` id`, `idalumno`,` subjectid`, `note1`,` note2`, `note3`,` средни`, „състояние“) СТОЙНОСТИ (1, 1000, 1, „8.00“, „9.25“, „7.00“, „0.00“, „“), (2, 1001, 1, „6.33“, „8.50“, "8.00", "0.00", ""), (3, 1002, 1, "10.00", "7.50", "8.33", "0.00", ""), (4, 1003, 2, "4.50 ',' 2.00 ',' 5.50 ',' 0.00 ',' '), (5, 1004, 1,' 3.50 ',' 2.00 ',' 4.00 ',' 0.00 ',' ');
След това ще създадем съхранена функция, която ще премине през цялата таблица с оценки и ще изчисли средната оценка за всеки ученик по предмет и ще актуализираме таблицата, за да посочим дали е успешна или неуспешна.
Можем да създадем функцията от Phpmyadmin или от всеки редактор, който ни позволява да пишем SQL код;
CREATE DEFINER = `root` @` localhost` ПРОЦЕДУРА `изчисляване на среден` () LANGUAGE SQL NOT DETERMINISTIC CONTAINS SQL SQL SECURITY DEFINER COMMENT '' BEGIN / * Обявявам променливи за функцията * / ОБЯВЯВАМ крайния BOOL по подразбиране FALSE; ОБЯВЯВАЙТЕ ID INT; DECLARE INT студент; ОБЯВЯВАЙТЕ INT материя; ОБЯВЯВАЙ бележка1 FLOAT; ОБЯВЯВАЙ бележка2 FLOAT; ОБЯВЯВАЙ бележка3 FLOAT; ДЕКЛАРИРАЙ абитуриентски FLOAT; / * Декларирам набор от записи или курсор с данните от sql заявката * / ОБЯВЯВАНЕ на rslist КУРСОР ЗА ИЗБЕРЕТЕ идентификатор, идентификатор на ученик, идентификационен номер на материал, бележка1, бележка2, бележка3 от тестови бележки; / * Декларирам променлива за откриване на края на повтарящ се цикъл ДЕКЛАРИРАЙ ПРОДЪЛЖАВАЙТЕ РАБОТНИКА ЗА SQLSTATE '02000' SET final = TRUE; / * Отварям набора от записи, за да започна обхода на данни с цикъл * / ОТВОРЕН rslista; цикъл: LOOP FETCH rslist INTO id, student, subject, grade1, grade2, grade3; / * Изчислявам средната стойност * / задавам средно = (бележка1 + бележка2 + бележка3) / 3; / * Запазвам го, като актуализирам таблицата * / актуализирам нотацията на изпита, зададена средно = d, където idalumno = студент и idmateria = предмет; / * Ако оценката е по -голяма или равна на 7, актуализирам състоянието като Одобрено, в противен случай състоянието ще бъде Неуспешно * / АКО av> = 7 ТОГАВА актуализация notaseams задава статус = 'Одобрен', където idalumno = студент и idmateria = предмет; ELSE актуализация на изписите нотация набор статус = 'Неуспешно', където студент id = студент и id на предмет = предмет; END IF; АКО ОФИНАЛНО ЗАТВОРИ rslist; LEAVE контур; END IF; END LOOP; КРАЙСлед това можем да изпълним функцията, като използваме следната команда:
CALL `изчисляване на средната стойност '()Резултатът ще бъде автоматично актуализиране на колоните за средно ниво и състояние.
Съхраняваните в MySQL функции обикновено се използват за изчисления и операции, докато съхранените процедури обикновено се използват за изпълнение на бизнес правила.
Функциите обикновено не засягат структурата на базата данни, но за да извършим някои изчисления, да сравним и върнем резултат или да променим данни в таблица в базата данни, можем също така да създадем тригер за контрол или одит на промените, които прави една функция.
Хареса ли ви и помогнахте на този урок?Можете да възнаградите автора, като натиснете този бутон, за да му дадете положителна точка