initial commit
This commit is contained in:
68
04-package-film.sql
Normal file
68
04-package-film.sql
Normal file
@@ -0,0 +1,68 @@
|
||||
DELIMITER $$
|
||||
|
||||
-- Schauspieler-Film-Package
|
||||
|
||||
DROP FUNCTION IF EXISTS film_pub_chk_geburtstag$$
|
||||
CREATE FUNCTION film_pub_chk_geburtstag(p_geburtstag DATETIME)
|
||||
RETURNS BIT
|
||||
BEGIN
|
||||
IF EXISTS(SELECT 1 FROM (SELECT 1) t WHERE p_geburtstag BETWEEN '1900-01-01' AND '2099-12-31')
|
||||
THEN
|
||||
RETURN 1;
|
||||
ELSE
|
||||
RETURN 0;
|
||||
END IF;
|
||||
END $$
|
||||
|
||||
DROP FUNCTION IF EXISTS film_priv_search_schauspieler$$
|
||||
CREATE FUNCTION film_priv_search_schauspieler (p_vorname VARCHAR(255), p_nachname VARCHAR(255))
|
||||
RETURNS INTEGER UNSIGNED
|
||||
BEGIN
|
||||
DECLARE res INTEGER UNSIGNED;
|
||||
DECLARE EXIT HANDLER FOR 1172 BEGIN
|
||||
SIGNAL SQLSTATE '50000' SET MESSAGE_TEXT = 'Mehr als ein Schauspieler mit dem Namen gefunden!';
|
||||
END;
|
||||
|
||||
SELECT Schauspieler.ID INTO res FROM Schauspieler WHERE Vorname=p_vorname AND Nachname=p_nachname;
|
||||
|
||||
IF res IS NULL THEN
|
||||
SIGNAL SQLSTATE '50001' SET MESSAGE_TEXT = 'Kein Schauspieler mit dem Namen gefunden!';
|
||||
END IF;
|
||||
RETURN res;
|
||||
END $$
|
||||
|
||||
DROP FUNCTION IF EXISTS `film_pub_search_film`$$
|
||||
CREATE FUNCTION `film_pub_search_film` (p_filmname VARCHAR(255))
|
||||
RETURNS INTEGER UNSIGNED
|
||||
BEGIN
|
||||
DECLARE res INTEGER UNSIGNED;
|
||||
DECLARE EXIT HANDLER FOR 1172 BEGIN
|
||||
SIGNAL SQLSTATE '50010' SET MESSAGE_TEXT = 'Mehr als einen Film mit dem Titel gefunden!';
|
||||
END;
|
||||
|
||||
SELECT Film.ID INTO res FROM Film WHERE Name=p_filmname;
|
||||
|
||||
IF res IS NULL THEN
|
||||
SIGNAL SQLSTATE '50011' SET MESSAGE_TEXT = 'Keinen Film mit dem Titel gefunden!';
|
||||
END IF;
|
||||
RETURN res;
|
||||
END $$
|
||||
|
||||
DROP PROCEDURE IF EXISTS `film_pub_add_schauspieler_film`$$
|
||||
CREATE PROCEDURE `film_pub_add_schauspieler_film` (p_vorname VARCHAR(255), p_nachname VARCHAR(255), p_filmname VARCHAR(255))
|
||||
BEGIN
|
||||
DECLARE EXIT HANDLER FOR 1062 BEGIN
|
||||
SIGNAL SQLSTATE '50022' SET MESSAGE_TEXT = 'Schauspieler-Film-Beziehung schon vorhanden!';
|
||||
END;
|
||||
|
||||
INSERT INTO nm_Film_Schauspieler (fk_Film_ID, fk_Schauspieler_ID) VALUES (film_pub_search_film(p_filmname), film_priv_search_schauspieler(p_vorname, p_nachname));
|
||||
END $$
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
DELIMITER ;
|
||||
Reference in New Issue
Block a user