1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| DELIMITER $$
CREATE PROCEDURE `changeTicketQuantity` (
paramPKMatch_ID INTEGER UNSIGNED,
paramPKSect_ID INTEGER UNSIGNED,
paramSectionNumber VARCHAR(6),
paramPrice DOUBLE UNSIGNED,
paramNewQT INTEGER UNSIGNED
)
BEGIN
DECLARE varOldQT INTEGER UNSIGNED;
DECLARE varI INTEGER UNSIGNED;
DECLARE varDiff INTEGER UNSIGNED;
SET varI = 0;
SET varOldQT = (SELECT count(PKTick_ID)
FROM tickets
WHERE FKTick_Match = paramPKMatch_ID
AND FKTick_Section = paramPKSect_ID
AND Tick_SectionNumber = paramSectionNumber
AND Tick_IsAvailable = 1);
IF varOldQT < paramNewQT THEN
SET varDiff = paramNewQT - varOldQT;
WHILE varI < varDiff DO
INSERT INTO ticket (FKTick_Match, FKTick_Section, Tick_SectionNumber, Tick_InitialPrice, Tick_Price, Tick_IsAvailable)
VALUES(paramPKMatch_ID, paramPKSect_ID, paramSectionNumber, paramPrice, paramPrice, 1);
SET varI = varI + 1;
END WHILE;
ELSEIF varOldQT > paramNewQT THEN
UPDATE `ticket`
SET Tick_IsAvailable = 0
WHERE FKTick_Match = paramPKMatch_ID
AND FKTick_Section = paramPKSect_ID
AND Tick_SectionNumber = paramSectionNumber
AND Tick_IsAvailable = 1
LIMIT varOldQT - paramNewQT;
END IF;
END $$ |
Partager