SQL & docker
This commit is contained in:
100
BD/Lekpa/TP_Note/Reponse.sql
Normal file
100
BD/Lekpa/TP_Note/Reponse.sql
Normal file
@@ -0,0 +1,100 @@
|
||||
/*
|
||||
A
|
||||
Nom et prénom : Wamster alexis
|
||||
Groupe : 2
|
||||
Salle TP : 235
|
||||
Nom du voisin de gauche : DIMITRIJEVIC Hugo
|
||||
Nom du voisin de droite : Schnur Edouard
|
||||
*/
|
||||
|
||||
/*Exercice 1*/
|
||||
|
||||
Create or replace procedure update_COMM
|
||||
IS
|
||||
cursor comm_emp IS Select EMPNO,COMM from EMP;
|
||||
e_comm EMP.COMM%TYPE;
|
||||
e_empno EMP.EMPNO%TYPE;
|
||||
comm_min EMP_SEUIL.COMM_MIN%TYPE;
|
||||
Begin
|
||||
for v_comm in comm_emp
|
||||
loop
|
||||
e_comm := v_comm(comm_emp.COMM);
|
||||
e_empno := v_comm(comm_emp.EMPNO);
|
||||
select COMM_MIN into comm_min from EMP_SEUIL S, EMP E where E.EMPNO = e_empno AND S.JOB = E.JOB;
|
||||
if (e_comm < comm_min) then
|
||||
update EMP set COMM=comm_min where EMPNO=e_empno;
|
||||
else if(e_comm = null) then
|
||||
update EMP set COMM=comm_min where EMPNO=e_empno;
|
||||
end if;
|
||||
end loop;
|
||||
end;
|
||||
|
||||
/*Exercice 2*/
|
||||
|
||||
create or replace procedure insert_emp(empno EMP.EMPNO%TYPE, ename EMP.ENAME%TYPE, job EMP.JOB%TYPE, mgr EMP.MGR%TYPE, hiredate EMP.HIREDATE%TYPE, sal EMP.SAL%TYPE, comm EMP.COMM%TYPE, deptno EMP.DEPTNO%TYPE)
|
||||
is
|
||||
comm_min EMP_SEUIL.COMM_MIN%TYPE;
|
||||
nb_emp SUIVI_EMP.Nombre_Emp%TYPE;
|
||||
begin
|
||||
select COMM_MIN into comm_min
|
||||
from EMP_SEUIL S, EMP E
|
||||
where E.EMPNO = empno AND S.JOB = E.JOB;
|
||||
|
||||
if (comm < comm_min) then
|
||||
comm := comm_min;
|
||||
else if(comm = null) then
|
||||
comm := comm_min;
|
||||
end if;
|
||||
|
||||
insert into EMP values (empno, ename, job, mgr, hiredate, sal, comm, deptno);
|
||||
|
||||
select Nombre_Emp into nb_emp from SUIVI_EMP where DEPTNO=deptno;
|
||||
nb_emp := nb_emp+1;
|
||||
update SUIVI_EMP set Nombre_Emp=nb_emp where DEPTNO=deptno;
|
||||
|
||||
exception
|
||||
WHEN OTHERS THEN
|
||||
DBMS.OUTPUT.PUT_LINE('departemen inexisatant');
|
||||
|
||||
end insert_emp;
|
||||
|
||||
/*Exercice 3*/
|
||||
|
||||
create or replace function salaire_moyen(job EMP.JOB%TYPE)
|
||||
RETURN int
|
||||
is
|
||||
moyenne int;
|
||||
begin
|
||||
select AVG(SAL) into moyenne
|
||||
from EMP
|
||||
where JOB=job;
|
||||
return moyenne
|
||||
end salaire_moyen;
|
||||
|
||||
/*Test*/
|
||||
select distinct JOB, salaire_moyen(JOB) from emp;
|
||||
|
||||
|
||||
/*Exercice 4*/
|
||||
|
||||
Create table EMP_HIS (
|
||||
EMPID EMP.EMPNO%TYPE PRIMARY KEY,
|
||||
ENAME EMP.JOB%TYPE,
|
||||
JOB EMP.MGR%TYPE,
|
||||
HIREDATE EMP.HIREDATE%TYPE,
|
||||
DEPTNO EMP.DEPTNO%TYPE,
|
||||
ENDDATE DEPT.DNAME%TYPE
|
||||
);
|
||||
|
||||
CREATE OR REPLACE TRIGGER historique
|
||||
AFTER DELETE
|
||||
ON EMP
|
||||
FOR EACH ROW
|
||||
DECLARE
|
||||
dname DEPT.DNAME%TYPE;
|
||||
BEGIN
|
||||
select DNAME into dname from DEPT where DEPTNO=DEPTNO:OLD;
|
||||
insert into EMP_HIS values(EMPNO:OLD, JOB:OLD, MGR:OLD, HIREDATE:OLD, DEPTNO:OLD, dname);
|
||||
END historique;
|
||||
|
||||
/*J'ai pas eu le temps de corriger les erreurs et de tester correctement*/
|
BIN
BD/Lekpa/TP_Note/TP_NOTE_FI_S3.pdf
Normal file
BIN
BD/Lekpa/TP_Note/TP_NOTE_FI_S3.pdf
Normal file
Binary file not shown.
84
BD/Lekpa/TP_Note/TP_NOTE_FI_S3.sql
Normal file
84
BD/Lekpa/TP_Note/TP_NOTE_FI_S3.sql
Normal file
@@ -0,0 +1,84 @@
|
||||
DROP TABLE EMP_SEUIL;
|
||||
DROP TABLE SUIVI_EMP;
|
||||
DROP TABLE EMP;
|
||||
DROP TABLE DEPT;
|
||||
|
||||
CREATE TABLE DEPT
|
||||
(DEPTNO NUMBER(2) NOT NULL Primary Key,
|
||||
DNAME VARCHAR2(14),
|
||||
LOC VARCHAR2(13) );
|
||||
|
||||
CREATE TABLE EMP
|
||||
(EMPNO NUMBER(4) NOT NULL Primary Key,
|
||||
ENAME VARCHAR2(10),
|
||||
JOB VARCHAR2(9),
|
||||
MGR NUMBER(4),
|
||||
HIREDATE DATE,
|
||||
SAL NUMBER(7, 2) check (sal > 0),
|
||||
COMM NUMBER(7, 2) check (comm > 0),
|
||||
DEPTNO NUMBER(2) References DEPT);
|
||||
|
||||
create table Suivi_EMP (
|
||||
deptno number references dept,
|
||||
nombre_emp number);
|
||||
|
||||
create table EMP_SEUIL (
|
||||
JOB VARCHAR2(9) NOT NULL Primary Key,
|
||||
COMM_MIN number);
|
||||
|
||||
INSERT into EMP_SEUIL values ('CLERK',100);
|
||||
INSERT into EMP_SEUIL values ('SALESMAN',1000);
|
||||
INSERT into EMP_SEUIL values ('PRESIDENT',5000);
|
||||
INSERT into EMP_SEUIL values ('MANAGER',2000);
|
||||
INSERT into EMP_SEUIL values ('ANALYST',200);
|
||||
commit;
|
||||
|
||||
INSERT INTO DEPT VALUES (10, 'ACCOUNTING', 'NEW YORK');
|
||||
INSERT INTO DEPT VALUES (20, 'RESEARCH', 'DALLAS');
|
||||
INSERT INTO DEPT VALUES (30, 'SALES', 'CHICAGO');
|
||||
INSERT INTO DEPT VALUES (40, 'OPERATIONS', 'BOSTON');
|
||||
commit;
|
||||
|
||||
|
||||
INSERT INTO EMP VALUES (7369, 'SMITH', 'CLERK', 7902, TO_DATE('17-12-1980', 'DD-MM-YYYY'), 800, NULL, 20);
|
||||
INSERT INTO EMP VALUES (7499, 'ALLEN', 'SALESMAN', 7698, TO_DATE('20-02-1981', 'DD-MM-YYYY'), 1600, 300, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7521, 'WARD', 'SALESMAN', 7698,
|
||||
TO_DATE('22-02-1981', 'DD-MM-YYYY'), 1250, 500, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7566, 'JONES', 'MANAGER', 7839, TO_DATE('2-04-1981', 'DD-MM-YYYY'), 2975, NULL, 20);
|
||||
INSERT INTO EMP VALUES (7654, 'MARTIN', 'SALESMAN', 7698, TO_DATE('28-09-1981', 'DD-MM-YYYY'), 1250, 1400, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7698, 'BLAKE', 'MANAGER', 7839,
|
||||
TO_DATE('1-05-1981', 'DD-MM-YYYY'), 2850, NULL, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7782, 'CLARK', 'MANAGER', 7839,
|
||||
TO_DATE('9-06-1981', 'DD-MM-YYYY'), 2450, NULL, 10);
|
||||
INSERT INTO EMP VALUES
|
||||
(7788, 'SCOTT', 'ANALYST', 7566,
|
||||
TO_DATE('09-12-1982', 'DD-MM-YYYY'), 3000, NULL, 20);
|
||||
INSERT INTO EMP VALUES(7839, 'KING', 'PRESIDENT', NULL,
|
||||
TO_DATE('17-11-1981', 'DD-MM-YYYY'), 5000, NULL, 10);
|
||||
INSERT INTO EMP VALUES
|
||||
(7844, 'TURNER', 'SALESMAN', 7698,
|
||||
TO_DATE('8-09-1981', 'DD-MM-YYYY'), 1500, 10, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7876, 'ADAMS', 'CLERK', 7788,
|
||||
TO_DATE('12-01-1983', 'DD-MM-YYYY'), 1100, NULL, 20);
|
||||
INSERT INTO EMP VALUES
|
||||
(7900, 'JAMES', 'CLERK', 7698,
|
||||
TO_DATE('3-12-1981', 'DD-MM-YYYY'), 950, NULL, 30);
|
||||
INSERT INTO EMP VALUES
|
||||
(7902, 'FORD', 'ANALYST', 7566,
|
||||
TO_DATE('3-12-1981', 'DD-MM-YYYY'), 3000, NULL, 20);
|
||||
INSERT INTO EMP VALUES
|
||||
(7934, 'MILLER', 'CLERK', 7782,
|
||||
TO_DATE('23-01-1982', 'DD-MM-YYYY'), 1300, NULL, 10);
|
||||
|
||||
COMMIT;
|
||||
|
||||
insert into suivi_emp select deptno, 0 from dept where deptno not in (select distinct deptno from emp);
|
||||
insert into suivi_emp select deptno, count(*) from emp group by deptno;
|
||||
commit;
|
||||
|
||||
|
Reference in New Issue
Block a user