initial commit
This commit is contained in:
86
07-package-reservierung.sql
Normal file
86
07-package-reservierung.sql
Normal file
@@ -0,0 +1,86 @@
|
||||
DELIMITER $$
|
||||
|
||||
-- Reservierung-Package
|
||||
|
||||
DROP FUNCTION IF EXISTS res_priv_search_vorstellung$$
|
||||
CREATE FUNCTION res_priv_search_vorstellung (p_saalname VARCHAR(50), p_beginn DATETIME)
|
||||
RETURNS INTEGER UNSIGNED
|
||||
BEGIN
|
||||
DECLARE res INTEGER UNSIGNED;
|
||||
DECLARE EXIT HANDLER FOR 1172 BEGIN
|
||||
SIGNAL SQLSTATE '50200' SET MESSAGE_TEXT = 'Mehr als eine Vorstellung gefunden!';
|
||||
END;
|
||||
|
||||
SELECT Vorstellung.ID INTO res FROM Vorstellung WHERE Vorstellung.fk_Saal_ID=saal_pub_search_saal(p_saalname) AND Vorstellung.Beginn=p_beginn;
|
||||
|
||||
IF res IS NULL THEN
|
||||
SIGNAL SQLSTATE '50201' SET MESSAGE_TEXT = 'Keine Vorstellung gefunden!';
|
||||
END IF;
|
||||
RETURN res;
|
||||
END $$
|
||||
|
||||
DROP FUNCTION IF EXISTS res_pub_chk_mail$$
|
||||
CREATE FUNCTION res_pub_chk_mail(p_mail VARCHAR(255))
|
||||
RETURNS BIT
|
||||
BEGIN
|
||||
if EXISTS(select 1 from (SELECT p_mail Mail) t where t.Mail REGEXP '^[a-zA-Z0-9][a-zA-Z0-9._-]*@[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,4}$')
|
||||
then
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
end if;
|
||||
END $$
|
||||
|
||||
DROP FUNCTION IF EXISTS `res_pub_reservieren`$$
|
||||
CREATE FUNCTION `res_pub_reservieren` (
|
||||
p_vorstellung_saalname VARCHAR(50),
|
||||
p_vorstellung_beginn DATETIME,
|
||||
p_vorname VARCHAR(255),
|
||||
p_nachname VARCHAR(255),
|
||||
p_mail VARCHAR(255),
|
||||
p_reihe INTEGER UNSIGNED,
|
||||
p_platz INTEGER UNSIGNED
|
||||
)
|
||||
RETURNS INTEGER UNSIGNED
|
||||
BEGIN
|
||||
DECLARE v_reservierungID INTEGER UNSIGNED DEFAULT NULL;
|
||||
|
||||
INSERT INTO Reservierung (Vorname, Nachname, Mail, fk_Vorstellung_ID) VALUES
|
||||
(p_vorname, p_nachname, p_mail, res_priv_search_vorstellung(p_vorstellung_saalname, p_vorstellung_beginn))
|
||||
;
|
||||
SET v_reservierungID = LAST_INSERT_ID();
|
||||
|
||||
INSERT INTO nm_Reservierung_Sitzplatz (fk_Reservierung_ID, fk_Sitzplatz_ID) VALUES
|
||||
(v_reservierungID, saal_pub_search_sitzplatz(p_vorstellung_saalname, p_reihe, p_platz))
|
||||
;
|
||||
RETURN v_reservierungID;
|
||||
END $$
|
||||
|
||||
|
||||
DROP PROCEDURE IF EXISTS `res_pub_add_reservieren_sitz`$$
|
||||
CREATE PROCEDURE `res_pub_add_reservieren_sitz` (
|
||||
p_reservierungID INTEGER UNSIGNED,
|
||||
p_reihe INTEGER UNSIGNED,
|
||||
p_platz INTEGER UNSIGNED
|
||||
)
|
||||
BEGIN
|
||||
DECLARE v_saalID INTEGER UNSIGNED DEFAULT 0;
|
||||
|
||||
IF (p_reservierungID IS NULL) THEN
|
||||
SIGNAL SQLSTATE '50210' SET MESSAGE_TEXT = 'Reservierungs-ID darf nicht NULL sein!';
|
||||
END IF;
|
||||
|
||||
SELECT Vorstellung.fk_Saal_ID INTO v_saalID FROM Reservierung
|
||||
JOIN Vorstellung ON Reservierung.fk_Vorstellung_ID = Vorstellung.ID
|
||||
WHERE Reservierung.ID=p_reservierungID
|
||||
;
|
||||
|
||||
INSERT INTO nm_Reservierung_Sitzplatz (fk_Reservierung_ID, fk_Sitzplatz_ID) VALUES
|
||||
(p_reservierungID, saal_pub_search_sitzplatz_saalID(v_saalID, p_reihe, p_platz))
|
||||
;
|
||||
END $$
|
||||
|
||||
|
||||
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user