68 lines
2.0 KiB
SQL
68 lines
2.0 KiB
SQL
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 ; |