0% ont trouvé ce document utile (0 vote)
8 vues3 pages

SGBD SessionPrincipale-corrigé

Le document présente des requêtes SQL et des procédures stockées pour gérer des données de candidats et d'offres d'emploi. Il inclut la création de vues, de curseurs, de procédures et de fonctions pour extraire et afficher des informations sur les candidats selon différents critères. De plus, il décrit la création d'une table pour classifier les candidats en fonction de leurs compétences.

Transféré par

cabinetkine53
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
8 vues3 pages

SGBD SessionPrincipale-corrigé

Le document présente des requêtes SQL et des procédures stockées pour gérer des données de candidats et d'offres d'emploi. Il inclut la création de vues, de curseurs, de procédures et de fonctions pour extraire et afficher des informations sur les candidats selon différents critères. De plus, il décrit la création d'une table pour classifier les candidats en fonction de leurs compétences.

Transféré par

cabinetkine53
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats DOCX, PDF, TXT ou lisez en ligne sur Scribd

Correction Examen Mai 2024

1/
CREATE VIEW V_Stat AS
SELECT
[Link],
[Link],
COUNT([Link]) AS nbre_Compétence
FROM Offres_Emplois o JOIN Candidatures ca ON [Link] = [Link]
JOIN
Candidats_Competences cc ON [Link] = [Link]
JOIN
Competences c ON [Link] = [Link]
GROUP BY
[Link]
with read only

2/
DECLARE
CURSOR cur_Candidates IS
SELECT [Link], [Link], [Link]érience, [Link],
[Link] AS DureeDeChomage
FROM Candidats c
LEFT JOIN Candidatures ca ON [Link] = [Link]
WHERE [Link] IS NULL -- Candidats jamais sélectionnés
[Link] > 12;
BEGIN
FOR candidate IN cur_Candidates LOOP
DBMS_OUTPUT.PUT_LINE('Nom: ' || [Link]);
DBMS_OUTPUT.PUT_LINE('Prénom: ' || [Link]);
DBMS_OUTPUT.PUT_LINE('Début d''Expérience: ' || TO_CHAR([Link]érience,
'DD-MM-YYYY'));
DBMS_OUTPUT.PUT_LINE('Durée de Chômage: ' || [Link] || ' mois');
END LOOP;
END;

3/A- Écrire une procédure stockée PROC_Candidats_Domaine qui permet d’afficher les noms et
prénoms des candidats qui ont postulé pour des offres d'emploi dans le domaine passé en paramètre.
Utiliser un curseur paramétré.
B- Tester la procédure pour le domaine : Web

A- CREATE OR REPLACE PROCEDURE PROC_Candidats_Domaine ( p_Domaine IN


VARCHAR2)
IS
CURSOR candidats_cur(p_Domaine VARCHAR2) IS
SELECT DISTINCT [Link], [Link]
FROM Candidats c
JOIN Candidatures ca ON [Link] = [Link]
JOIN OffresEmplois o ON [Link] = [Link]
WHERE [Link] = p_Domaine;
v_Nom [Link]%TYPE;
v_Prenom [Link]%TYPE;
BEGIN
OPEN candidats_cur(p_Domaine);
LOOP
FETCH candidats_cur INTO v_Nom, v_Prenom;
EXIT WHEN candidats_cur%NOTFOUND;
DBMS_OUTPUT.PUT_LINE('Nom: ' || v_Nom);
DBMS_OUTPUT.PUT_LINE('Prénom: ' || v_Prenom);
END LOOP;
CLOSE candidats_cur;
END PROC_Candidats_Domaine;

B- BEGIN
PROC_Candidats_Domaine('WEB');
END;

4/ CREATE OR REPLACE FUNCTION FN_NombreCompetencesCandidat (


p_IDCandidat [Link]%TYPE) RETURN NUMBER IS
v_NombreCompetences number ;
v_IDCandidat [Link]%TYPE ;
BEGIN
SELECT IDCandidat
INTO v_IDCandidat
FROM CANDIDATS
WHERE IDCandidat = p_IDCandidat;

SELECT COUNT(*)
INTO v_NombreCompetences
FROM CANDIDATS_COMPETENCES
WHERE IDCandidat = p_IDCandidat;
RETURN v_NombreCompetences;
EXCEPTION

WHEN NO_DATA_FOUND THEN


DBMS_OUTPUT.PUT_LINE('Erreur: Candidat non trouvé.');
RETURN 0;

WHEN OTHERS THEN


DBMS_OUTPUT.PUT_LINE('Erreur: ' || SQLERRM);
RETURN NULL;
END FN_NombreCompetencesCandidat;
5)
a-

BEGIN
EXECUTE IMMEDIATE 'CREATE TABLE CLASSIFICATIONS_CANDIDATS (
ID_Classification INTEGER PRIMARY KEY,
ID_Candidat INTEGER NOT NULL,
Classe VARCHAR2(100) NOT NULL,
CONSTRAINT FK_Candidat FOREIGN KEY (ID_Candidat) REFERENCES
CANDIDATS(IDCandidat)
)';
END;
b-
CREATE SEQUENCE SeqClass
START WITH 1024
INCREMENT BY 1;

c- CREATE OR REPLACE TRIGGER T_Classifier


AFTER INSERT ON Candidats_Competences
FOR EACH ROW
DECLARE
v_Domaine VARCHAR2(100);
v_IDClassification NUMBER;
BEGIN
-- Initialiser le domaine à une chaîne vide
v_Domaine := '' '';
-- Déterminer le domaine en fonction des compétences
IF :[Link] IN ( 'Php', 'JavaScript', 'NodeJS') THEN
v_Domaine := 'Web';
ELSIF :[Link] IN ('Hadoop', 'Spark') THEN
v_Domaine := 'BigData';
ELSIF :[Link] IN (
'PowerBI', 'Talend' ) THEN
v_Domaine := 'BI';
END IF;
-- Insérer dans la table Classifications_Candidats si un domaine a été trouvé
IF v_Domaine IS NOT NULL THEN
v_IDClassification := [Link];
INSERT INTO Classifications_Candidats (ID_Classification, IDCandidat, Domaine)
VALUES (v_IDClassification, :[Link], v_Domaine);
END IF;
END;
/

Vous aimerez peut-être aussi