Académique Documents
Professionnel Documents
Culture Documents
exceptions :***********************************************************************
***************
5)Créez une procédure stockée qui gère les exceptions pour
le cas où un employé spécifié n'existe pas dans la base de données.
----------------------------------------------------------
CREATE PROCEDURE GetEmployeeInfo (
IN p_employee_id INT, --est le paramètre d'entrée spécifiant
l'identifiant de l'employé dont nous voulons récupérer les informations.
OUT p_employee_name VARCHAR(100), --sont les paramètres de sortie qui
contiendront respectivement le nom et le salaire de l'employé.
OUT p_employee_salary DECIMAL(10,2),--
OUT p_error_message VARCHAR(255) --est le paramètre de sortie qui contiendra
un message d'erreur en cas d'erreur.
)
LANGUAGE SQL
BEGIN
DECLARE v_employee_name VARCHAR(100);
DECLARE v_employee_salary DECIMAL(10,2);
DECLARE SQLSTATE CHAR(5);
-- Gestion de l'exception
EXCEPTION
WHEN NOT FOUND THEN --Si l'employé n'est pas
trouvé, un message d'erreur approprié est assigné à p_error_message.
SET p_error_message = 'Employee not found.';
END
*************************************************Transactions :********************
******************************************************************
6)Écrivez une procédure stockée qui insère un nouvel employé dans la base de
données
et met à jour les données de plusieurs tables en une seule transaction.
----------------------------------------------------------
CREATE PROCEDURE InsertAndUpdateEmployee (
IN p_employee_name VARCHAR(100),
IN p_employee_salary DECIMAL(10,2),
IN p_department_id INT,
IN p_manager_id INT
)
LANGUAGE SQL
BEGIN
DECLARE v_employee_id INT;
DECLARE SQLCODE INT;
DECLARE SQLSTATE CHAR(5);
-- Début de la transaction
DECLARE EXIT HANDLER FOR SQLEXCEPTION, SQLWARNING
BEGIN
ROLLBACK;
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'Error occurred during transaction.';
END;
-- Valider la transaction
COMMIT;
END