DELIMITER //
DROP PROCEDURE exemplar_loschen //
CREATE PROCEDURE exemplar_loschen (exid INTEGER, OUT rc INTEGER)

main_proc:
BEGIN
DECLARE keine_ausl BOOLEAN;
DECLARE CUSTOM_EXCEPTION CONDITION FOR SQLSTATE '45000';

SELECT MIN(ruckgabe) FROM ausleihe WHERE exemplar_id = exid INTO keine_ausl;

IF NOT keine_ausl
THEN
  SELECT "Dieses Medium ist noch verliehen" AS Fehler;
  SET rc = 1;
  LEAVE main_proc;
--  SIGNAL CUSTOM_EXCEPTION SET MESSAGE_TEXT = 'Dieses Medium ist noch verliehen';
END IF;

INSERT INTO alte_ausleihen
  SELECT vorname,nachname,signatur
    FROM ausleihe JOIN exemplar ON ausleihe.exemplar_id = exemplar.id
    JOIN nutzer ON ausleihe.nutzer_id = nutzer.id
    WHERE exemplar_id = exid;
DELETE FROM ausleihe WHERE exemplar_id = exid;
DELETE FROM exemplar WHERE id = exid;
SET rc = 0;
END; //
DELIMITER ;

