Vous êtes sur la page 1sur 2

*****************************************Suppression de

données :**************************************************************************
********************
3)Écrivez une procédure stockée qui supprime tous les employés
dont le salaire est inférieur à un certain montant spécifié.
----------------------------------------------------------
CREATE PROCEDURE DeleteEmployeesBySalary (
IN p_minimum_salary DECIMAL(10,2)
)
LANGUAGE SQL
BEGIN
DELETE FROM employees
WHERE salary < p_minimum_salary;
END
*****************************************Utilisation de
curseurs :*************************************************************************
*********************
4)Développez une procédure stockée qui utilise un curseur pour récupérer
tous les employés d'un département spécifique et renvoyer leur nom et leur
salaire.
----------------------------------------------------------
CREATE PROCEDURE GetEmployeesByDepartment (
IN p_department_id INT
)
LANGUAGE SQL
BEGIN
DECLARE v_employee_name VARCHAR(100);
DECLARE v_employee_salary DECIMAL(10,2);

-- Déclaration du curseur
DECLARE employee_cursor CURSOR FOR
SELECT name, salary
FROM employees
WHERE department_id = p_department_id;

-- Ouverture du curseur
OPEN employee_cursor;

-- Boucle pour récupérer les employés un par un


FETCH FROM employee_cursor INTO v_employee_name, v_employee_salary;

-- Boucle de traitement
WHILE (SQLSTATE = '00000') DO
-- Affichage ou traitement des données
-- Dans cet exemple, nous pourrions afficher les données, mais vous pouvez
les utiliser comme vous le souhaitez
-- Ici, nous affichons le nom et le salaire de l'employé
-- Vous pouvez utiliser ces données pour tout autre traitement nécessaire
-- Vous pouvez également les stocker dans une table temporaire ou les
retourner comme un résultat de la procédure stockée

-- Affichage du nom et du salaire de l'employé


-- Remplacez cet affichage par le traitement approprié que vous souhaitez
effectuer
DBMS_OUTPUT.PUT_LINE('Employee Name: ' || v_employee_name || ', Salary: '
|| v_employee_salary);

-- Fetch suivant
FETCH FROM employee_cursor INTO v_employee_name, v_employee_salary;
END WHILE;

-- Fermeture du curseur
CLOSE employee_cursor;
END

***
CREATE PROCEDURE GetEmployeesByDepartment (
IN p_department_id INT
)
LANGUAGE SQL
BEGIN
DECLARE v_employee_name VARCHAR(100);
DECLARE v_employee_salary DECIMAL(10,2);

-- Création d'une table temporaire pour stocker les données


CREATE TABLE temp_employee_data (
employee_name VARCHAR(100),
employee_salary DECIMAL(10,2)
);

-- Déclaration du curseur
DECLARE employee_cursor CURSOR FOR
SELECT name, salary
FROM employees
WHERE department_id = p_department_id;

-- Ouverture du curseur
OPEN employee_cursor;

-- Boucle pour récupérer les employés un par un


FETCH FROM employee_cursor INTO v_employee_name, v_employee_salary;

-- Boucle de traitement
WHILE (SQLSTATE = '00000') DO
-- Stockage des données dans la table temporaire
INSERT INTO temp_employee_data (employee_name, employee_salary)
VALUES (v_employee_name, v_employee_salary);

-- Fetch suivant
FETCH FROM employee_cursor INTO v_employee_name, v_employee_salary;
END WHILE;

-- Fermeture du curseur
CLOSE employee_cursor;

-- Sélectionnez les données de la table temporaire si nécessaire


SELECT * FROM temp_employee_data;

-- Suppression de la table temporaire


DROP TABLE temp_employee_data;
END

Vous aimerez peut-être aussi