Advertisement
Guest User

LABORATOR BD

a guest
Dec 13th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 3.25 KB | None | 0 0
  1. --------------------------------------------------
  2. DROP TABLE CADOU CASCADE CONSTRAINTS;
  3. CREATE TABLE CADOU (
  4.     idCadou NUMBER(5) PRIMARY KEY,
  5.     denumire VARCHAR2(15) NOT NULL,
  6.     descriere VARCHAR2(50) NOT NULL,
  7.     tip VARCHAR2(1)
  8. )
  9.  
  10. DROP SEQUENCE cadou_seq;
  11. CREATE SEQUENCE cadou_seq START WITH 1;
  12.  
  13. CREATE OR REPLACE TRIGGER cadou_id_trigger
  14. BEFORE INSERT ON CADOU
  15. FOR EACH ROW
  16.   BEGIN
  17.     IF :NEW.idCadou IS NULL THEN
  18.       :NEW.idCadou := cadou_seq.NEXTVAL;
  19.     END IF;
  20.   END;
  21. /
  22.  
  23. INSERT INTO CADOU (denumire, descriere, tip) VALUES('Masinuta', 'Masinuta este albastra', 'M');
  24. INSERT INTO CADOU (denumire, descriere, tip) VALUES('Masinuta', 'Masinuta este rosie', 'F');
  25. INSERT INTO CADOU (denumire, descriere, tip) VALUES('Urs', 'Ursul este mov', 'M');
  26. INSERT INTO CADOU (denumire, descriere, tip) VALUES('Urs', 'Ursul este rosu', 'F');
  27. INSERT INTO CADOU (idCadou, denumire, descriere, tip) VALUES(1,'Urs', 'Ursul este rosu', 'F');
  28. INSERT INTO CADOU (idCadou, denumire, descriere, tip) VALUES(5,'Urs', 'Ursul este galben', 'F');
  29. SELECT * FROM CADOU;
  30.  
  31. --------------------------------------------------
  32. CREATE TABLE COPIL (
  33.     idCopil NUMBER(5) PRIMARY KEY,
  34.     nume VARCHAR2(30),
  35.     prenume VARCHAR2(30),
  36.     judet VARCHAR(2)
  37. )
  38.  
  39. DROP SEQUENCE copil_seq;
  40. CREATE SEQUENCE copil_seq START WITH 1;
  41.  
  42. CREATE OR REPLACE TRIGGER copil_id_trigger
  43. BEFORE INSERT ON COPIL
  44. FOR EACH ROW
  45.   BEGIN
  46.     IF :NEW.idCopil IS NULL THEN
  47.       :NEW.idCopil := copil_seq.NEXTVAL;
  48.     END IF;
  49.   END;
  50. /
  51.  
  52. INSERT INTO COPIL (nume, prenume, judet) VALUES ('Vrabie', 'Cosmin', 'IS');
  53. INSERT INTO COPIL (nume, prenume, judet) VALUES ('Vrabie2', 'Cosmin2', 'BT');
  54. INSERT INTO COPIL (nume, prenume, judet) VALUES ('Vrabie3', 'Cosmin3', 'IS');
  55. INSERT INTO COPIL (nume, prenume, judet) VALUES ('Vrabie4', 'Cosmin4', 'GL');
  56. INSERT INTO COPIL (idCopil, nume, prenume, judet) VALUES (4, 'Vrabie5', 'Cosmin5', 'IS');
  57. INSERT INTO COPIL (idCopil, nume, prenume, judet) VALUES (5, 'Vrabie5', 'Cosmin5', 'IS');
  58.  
  59.  
  60. SELECT * FROM COPIL;
  61.  
  62. --------------------------------------------------
  63. CREATE TABLE CORESPONDENTA_CADOU (
  64.     idCorespondenta NUMBER(5) PRIMARY KEY,
  65.     idCadou NUMBER(5) NOT NULL,
  66.     idCopil NUMBER(5) NOT NULL,
  67.     CONSTRAINT fk_cadou
  68.       FOREIGN KEY (idCadou)
  69.       REFERENCES CADOU(idCadou),
  70.     CONSTRAINT fk_copil
  71.       FOREIGN KEY (idCopil)
  72.       REFERENCES COPIL(idCopil)
  73. )
  74.  
  75.  
  76. DROP SEQUENCE corespondenta_cadou_seq;
  77. CREATE SEQUENCE corespondenta_cadou_seq START WITH 1;
  78.  
  79. CREATE OR REPLACE TRIGGER corespondenta_cadou_id_trigger
  80. BEFORE INSERT ON CORESPONDENTA_CADOU
  81. FOR EACH ROW
  82.   BEGIN
  83.     IF :NEW.idCorespondenta IS NULL THEN
  84.       :NEW.idCorespondenta := corespondenta_cadou_seq.NEXTVAL;
  85.     END IF;
  86.   END;
  87. /
  88.  
  89. --------------------------------------------------
  90.  
  91. CREATE OR REPLACE PROCEDURE alocare_cadou IS
  92. idCopil NUMBER(5);
  93. BEGIN
  94.   FOR cadou IN (SELECT * FROM cadou)
  95.   LOOP
  96.     SELECT idCopil INTO idCopil FROM (SELECT idCopil FROM COPIL ORDER BY DBMS_RANDOM.VALUE)
  97.           WHERE ROWNUM = 1;
  98.     INSERT INTO CORESPONDENTA_CADOU (idCadou, idCopil)
  99.       VALUES (cadou.idCadou, idCopil);
  100.   END LOOP;
  101. END;
  102. /
  103.  
  104. SELECT * FROM CORESPONDENTA_CADOU;
  105.  
  106. ---------------------------------------
  107. BEGIN
  108. ALOCARE_CADOU();
  109. END;
  110. /
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement