Elyspio

TD6 SQL

Mar 10th, 2018
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.22 KB | None | 0 0
  1. DECLARE
  2.   v_nom VARCHAR2(40);
  3. BEGIN
  4.   SELECT ename INTO v_nom FROM emp WHERE  empno = 7844;
  5.   DBMS_OUTPUT.PUT_LINE('L e salariΓ© qui a pour matricule 7844 s appelle ' || v_nom);
  6. END;
  7.  
  8. CREATE TABLE film
  9. (
  10.   numfilm NUMBER,
  11.   titre VARCHAR2(100),
  12.   realisateurId NUMBER,
  13.   actPrincId NUMBER,
  14.   Constraint fk_real foreign key (realisateurID) references realisateur(id),
  15.   Constraint fk_act foreign key (actPrincId) references acteur(id),
  16.   constraint pk primary key (numfilm)
  17. );
  18.  
  19.  
  20. SELECT * FROM realisateur;
  21. CREATE TABLE acteur
  22. (
  23.   id NUMBER primary key,
  24.   prenom VARCHAR2(40),
  25.   nom VARCHAR2(40)
  26.  
  27.  
  28. );
  29.  
  30. CREATE TABLE realisateur
  31. (
  32.   id NUMBER primary key,
  33.   prenom VARCHAR2(40),
  34.   nom VARCHAR2(40)
  35.  
  36.  
  37. );
  38.  
  39. SELECT * FROM
  40.  
  41. INSERT INTO film VALUES (1, 'Les Aventuriers de l arche perdue', 1, 5)
  42. INSERT INTO film VALUES (2, 'Les Huit Salopards', 2, 5)
  43.  
  44. INSERT INTO realisateur VALUES (1, 'Steven', 'Spielberg');
  45. INSERT INTO realisateur VALUES (2, 'Quentin', 'Tarantino');
  46. INSERT INTO realisateur VALUES (3, 'Alfred', 'Hitchcock');
  47.  
  48. INSERT INTO acteur  VALUES (1, 'Johnny', 'Depp');
  49. INSERT INTO acteur  VALUES (2, 'Leonardo', 'DiCaprio');
  50. INSERT INTO acteur  VALUES (3, 'Clint ', 'Eastwood');
  51. INSERT INTO acteur  VALUES (4, 'Bruce ', 'Willis');
  52. INSERT INTO acteur VALUES (5, 'Harrison', 'Ford');
  53. INSERT INTO acteur VALUES (6, 'Samuel L',  'Jackson');
  54.  
  55. DECLARE
  56.   CURSOR c_record IS SELECT numfilm, titre FROM film, realisateur WHERE realisateur.nom =  'Spielberg' AND realisateur.id = film.realisateurId;
  57.   nb_film NUMBER;
  58. BEGIN
  59.       DBMS_OUTPUT.PUT_LINE('Realisateur : Spielberg ');
  60.   FOR v_record IN c_record
  61.   LOOP
  62.       DBMS_OUTPUT.PUT_LINE('Film ' || v_record.numfilm || ' : ' || v_record.titre );
  63.       nb_film := nb_film + 1;
  64.   END LOOP;
  65. END;
  66.  
  67.  
  68. SELECT * FROM emp;
  69.  
  70. DECLARE
  71.  
  72. CURSOR c_record  IS SELECT titre FROM film, acteur WHERE actPrincId = no_act;
  73.  
  74. BEGIN
  75.   EXECUTE IMMEDIATE "create table Table_acteur (titre film.titre%TYPE)";
  76.   FOR v_record IN c_record
  77.   LOOP
  78.     INSERT INTO Table_acteur VALUES (v_record.titre);
  79.   END LOOP;
  80.  
  81. END;
  82.  
  83.  
  84. -- 3
  85.  
  86. -- 3.1
  87. CREATE TABLE TableBonus(login VARCHAR2(40) primary key, bonus NUMBER, nbExLoues INTEGER)
  88.  
  89.  
  90. -- 3.2
  91.  
  92.   INSERT INTO TableBonus VALUES ('Jojo', 0, 4);
  93.   INSERT INTO TableBonus VALUES ('Colin', 0, 1);
  94.   INSERT INTO TableBonus VALUES ('Maxime', 0, 2);
  95.   INSERT INTO TableBonus VALUES ('Remi', 0, 10);
  96.   INSERT INTO TableBonus VALUES ('Zack', 0, 8);
  97.   INSERT INTO TableBonus VALUES ('Perick', 0, 0);
  98. COMMIT;
  99.  
  100. SELECT * FROM TABLEBONUS;
  101.  
  102. DECLARE
  103.   n1 NUMBER;
  104.   n2 NUMBER;
  105.   CURSOR c_table IS SELECT * FROM  TABLEBONUS;
  106. BEGIN
  107.   n1 := &n1;
  108.   n2 := &n2;
  109.  
  110.  
  111.  
  112.   FOR v_table IN c_table LOOP
  113.     IF v_table.nbExLoues >= 0 AND v_table.nbExLoues < n1 THEN
  114.       UPDATE TableBonus SET bonus = 0.1 WHERE v_table.login = login;
  115.     END IF;
  116.  
  117.      IF v_table.nbExLoues >= n1 AND v_table.nbExLoues < n2 THEN
  118.       UPDATE TableBonus SET bonus = 0.2 WHERE v_table.login = login;
  119.     END IF;
  120.  
  121.       IF v_table.nbExLoues >= 2 THEN
  122.       UPDATE TableBonus SET bonus = 0.4 WHERE v_table.login = login;
  123.     END IF;
  124.  
  125.       IF v_table.nbExLoues = 0  THEN
  126.       UPDATE TableBonus SET bonus = 0 WHERE v_table.login = login;
  127.     END IF;
  128.  
  129.   END LOOP;
  130.  
  131. END;
Advertisement