From 6c8bc8ae7c00570b61532d3aff598753db5c2933 Mon Sep 17 00:00:00 2001 From: PavelBegunkov <asml.Silence@gmail.com> Date: Mon, 22 Sep 2014 00:33:56 +0400 Subject: [PATCH] db procs --- db/StoredProcedures.sql | 54 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/db/StoredProcedures.sql b/db/StoredProcedures.sql index 0f4ef7872..1ed31ecbe 100644 --- a/db/StoredProcedures.sql +++ b/db/StoredProcedures.sql @@ -116,6 +116,27 @@ BEGIN RETURN (checker IS NOT NULL AND checker); END // + +DROP FUNCTION IF EXISTS GetDisciplineMaxRate// +CREATE FUNCTION `GetDisciplineMaxRate` ( `DisciplineID` INT + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE vMax INT; + SET vMax = 0; + SELECT SUM(submodules.MaxRate) + INTO vMax + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID AND + modules.Type != 3 + WHERE DisciplineID = modules.DisciplineID; + + IF vMax IS NULL THEN + SET vMax = 0; + END IF; + RETURN vMax; +END // + -- ------------------------------------------------------------------------------------------- -- ====== Common ======= -- -- ------------------------------------------------------------------------------------------- @@ -3018,6 +3039,9 @@ BEGIN WHERE TeacherID = disciplines.AuthorID AND SubmoduleID = submodules.ID LIMIT 1; + IF checker <= 0 THEN + RETURN -1; + END IF; UPDATE `submodules` SET submodules.MaxRate = MaxRate @@ -3026,6 +3050,36 @@ BEGIN RETURN 0; END // + +DROP FUNCTION IF EXISTS ChangeSubmoduleMaxAndControl// +CREATE FUNCTION `ChangeSubmoduleMaxAndControl` ( `TeacherID` INT, + `SubmoduleID` INT, + `MaxRate` INT, + `ControlType` VARCHAR(30) charset utf8 + ) RETURNS int(11) + NO SQL +BEGIN + DECLARE checker INT; + + SET checker = -1; + SELECT submodules.ID + INTO checker + FROM `submodules` + INNER JOIN `modules` ON submodules.ModuleID = modules.ID + INNER JOIN `disciplines` ON disciplines.ID = modules.DisciplineID + WHERE TeacherID = disciplines.AuthorID AND + SubmoduleID = submodules.ID + LIMIT 1; + + UPDATE `submodules` + SET submodules.MaxRate = MaxRate, + submodules.Type = ControlType + WHERE submodules.ID = SubmoduleID + LIMIT 1; + RETURN 0; +END // + + DROP FUNCTION IF EXISTS ChangeSubmoduleOrder// CREATE FUNCTION `ChangeSubmoduleOrder` ( `TeacherID` INT, `SubmoduleID` INT, -- GitLab