Vous êtes sur la page 1sur 2

*********************************************Passage de paramètres

complexes :************************************************************************
******************
7)Développez une procédure stockée qui prend en entrée
le nom d'un département et renvoie le nombre d'employés dans ce département ainsi
que la somme de leurs salaires.
----------------------------------------------------------
CREATE PROCEDURE GetDepartmentStats (
IN p_department_name VARCHAR(100), --est le paramètre d'entrée contenant le nom
du département pour lequel nous voulons récupérer les statistiques.
OUT p_employee_count INT, --est le paramètre de sortie qui contiendra
le nombre d'employés dans le département.
OUT p_total_salary DECIMAL(10,2) --est le paramètre de sortie qui contiendra
la somme des salaires des employés dans le département.
)
LANGUAGE SQL
BEGIN
DECLARE v_department_id INT;

-- Récupération de l'identifiant du département en fonction de son nom


SELECT department_id INTO v_department_id
FROM departments
WHERE name = p_department_name;

-- Compter le nombre d'employés dans le département


SELECT COUNT(*) INTO p_employee_count
FROM employees
WHERE department_id = v_department_id;

-- Calculer la somme des salaires des employés dans le département


SELECT COALESCE(SUM(salary), 0) INTO p_total_salary --Notez l'utilisation de
la fonction COALESCE pour éviter de renvoyer NULL
FROM employees si aucun salaire n'est
trouvé.
WHERE department_id = v_department_id;
END

*********************************************Utilisation de variables
temporaires :**********************************************************************
********************
8)Créez une procédure stockée qui utilise des variables temporaires
pour stocker des données intermédiaires lors du traitement d'un ensemble de
données.
----------------------------------------------------------
CREATE PROCEDURE ProcessEmployeeData ()
LANGUAGE SQL
BEGIN
DECLARE v_total_salary DECIMAL(10,2); --Nous déclarons deux variables locales
v_total_salary et v_average_salary
DECLARE v_average_salary DECIMAL(10,2); --pour stocker respectivement la somme
totale des salaires des employés et la moyenne de leurs salaires.

-- Déclaration d'une table temporaire pour stocker les salaires des employés
DECLARE GLOBAL TEMPORARY TABLE temp_employee_salaries (
salary DECIMAL(10,2) -- Déclaration d'une
table temporaire pour stocker les salaires des employés
) WITH REPLACE;

-- Insertion des salaires des employés dans la table temporaire


INSERT INTO SESSION.temp_employee_salaries (salary)
SELECT salary
FROM employees;

-- Calcul de la somme des salaires des employés à partir de la table


temporaire.
SELECT COALESCE(SUM(salary), 0) INTO v_total_salary
FROM SESSION.temp_employee_salaries;

-- Calcul de la moyenne des salaires des employés à partir de la table


temporaire.
SELECT COALESCE(AVG(salary), 0) INTO v_average_salary
FROM SESSION.temp_employee_salaries;

-- Affichage des résultats


SELECT 'Total Salary:', v_total_salary;
SELECT 'Average Salary:', v_average_salary; --Notez l'utilisation de
SESSION. pour déclarer la portée de la table temporaire.
--Cela signifie que la table
temporaire existe pour la session actuelle et sera
-- Suppression de la table temporaire --automatiquement supprimée
lorsque la session se termine.
DROP TABLE SESSION.temp_employee_salaries;
END

----------------------------------------------------------

Vous aimerez peut-être aussi