Advertisement
Guest User

Untitled

a guest
May 28th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE TABLE airport(
  2.    id int NOT NULL,
  3.    name CHAR(50) NOT NULL,
  4.    location CHAR(50) NOT NULL,
  5.    numberOfPlane int NOT NULL,
  6.    CONSTRAINT airport_pk PRIMARY KEY (id)  
  7. );
  8.  
  9. DROP TABLE airport;
  10.  
  11.  
  12. /*-------------------------------*/
  13. CREATE TABLE airplane(
  14.   id int NOT NULL,
  15.   name CHAR(50) NOT NULL,
  16.   numberOfSeat int NOT NULL,
  17.   airport_id int,
  18.   CONSTRAINT airplane_pk PRIMARY KEY(id),
  19.   CONSTRAINT fk_airplane
  20.     FOREIGN KEY (airport_id)
  21.     REFERENCES airport (id)
  22. );
  23.  
  24. DROP TABLE airplane;
  25.  
  26.  
  27. /*-------------------------------*/
  28. CREATE TABLE passenger(
  29.   id int NOT NULL,
  30.   name CHAR(50) NOT NULL,
  31.   phone CHAR(50) NOT NULL,
  32.   mail CHAR(50) NOT NULL,
  33.   CONSTRAINT passenger_pk
  34.     PRIMARY KEY (id)
  35. );
  36.  
  37. DROP TABLE passenger;
  38.  
  39.  
  40. /*-------------------------------*/
  41. CREATE TABLE flight1(
  42.   flightid int NOT NULL,
  43.   passenger_id int NOT NULL,
  44.   airplane_id int NOT NULL,
  45.   departure_time DATE,
  46.   arrival_time DATE,
  47.   fromWhere CHAR(50),
  48.   toWhere CHAR(50),
  49.   PRIMARY KEY (flightid),
  50.   CONSTRAINT flight_fk1
  51.     FOREIGN KEY (airplane_id)
  52.     REFERENCES airplane1 (id),
  53.   CONSTRAINT flight_fk2
  54.     FOREIGN KEY (passenger_id)
  55.     REFERENCES passenger1 (id)
  56. );
  57.  
  58. DROP TABLE flight1;
  59.  
  60. ----------------insert airport---------------------
  61.  
  62. DROP PROCEDURE Insert_Airport;
  63. CREATE OR REPLACE PROCEDURE Insert_Airport(airportName IN CHAR, airportLocation IN CHAR, noOfPlane IN int)
  64.   IS
  65.   idAirport int;
  66.   BEGIN
  67.           SELECT MAX(id) INTO idAirport FROM (
  68.           (SELECT id FROM AIRPORT1)
  69.               UNION ALL
  70.           (SELECT id FROM AIRPORT2@LINK_VUDB)  
  71.               UNION ALL
  72.           (SELECT id FROM AIRPORT3@LINK_TRUNGDB)   
  73.               UNION ALL
  74.           (SELECT id FROM AIRPORT4@LINK_LONGDB)        
  75.         );  
  76.         idAirport := idAirport + 1;
  77.  
  78.     IF (noOfPlane < 10 AND airportLocation = 'HN') THEN --Dung site 1
  79.         INSERT INTO AIRPORT1 VALUES (idAirport, airportName, airportLocation, noOfPlane);
  80.     ELSIF (noOfPlane < 10 AND airportLocation = 'HCM') THEN --Vu site 2
  81.         INSERT INTO AIRPORT2@LINK_VUDB VALUES (idAirport, airportName, airportLocation, noOfPlane);
  82.     ELSIF (noOfPlane >= 10 AND airportLocation = 'DN') THEN --Trung site 3
  83.         INSERT INTO AIRPORT3@LINK_TRUNGDB VALUES (idAirport, airportName, airportLocation, noOfPlane);
  84.     ELSIF (noOfPlane >= 10 AND airportLocation = 'Hue') THEN --Long site 4
  85.         INSERT INTO AIRPORT4@LINK_LONGDB VALUES (idAirport, airportName, airportLocation, noOfPlane);
  86.     ELSE
  87.         dbms_output.put_line('Error to insert');
  88.     END IF;
  89.   END;
  90.   SELECT * FROM airport1;
  91.  
  92.  
  93.  
  94.     -----------------insert flight----------------
  95. SELECT * FROM flight3@link_trungdb;
  96.  
  97.   DROP PROCEDURE Insert_Flight;
  98. CREATE OR REPLACE PROCEDURE Insert_Flight(passengerid IN int, airplaneid IN int, departuretime IN CHAR, arrivaltime IN CHAR, fromwhere IN CHAR, towhere IN CHAR)
  99.   IS
  100.   fid int;
  101.  
  102.   BEGIN
  103.           SELECT MAX(flightid) INTO fid FROM (
  104.           (SELECT flightid FROM flight1)
  105.               UNION ALL
  106.           (SELECT flightid FROM flight2@LINK_VUDB)
  107.               UNION ALL
  108.           (SELECT flightid FROM flight3@LINK_TRUNGDB)  
  109.               UNION ALL
  110.           (SELECT flightid FROM flight4@LINK_LONGDB)        
  111.         );  
  112.         fid := fid + 1;
  113.  
  114.     IF (passengerid < 10 AND airplaneid < 10) THEN --Dung site 1
  115.         INSERT INTO FLIGHT1 VALUES (fid, passengerid, airplaneid, TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),fromwhere,towhere);
  116.     ELSIF (passengerid < 10 AND airplaneid >= 10) THEN -- site 2
  117.         INSERT INTO FLIGHT2@LINK_VUDB VALUES (fid, passengerid, airplaneid, TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),fromwhere,towhere);
  118.     ELSIF (passengerid >= 10 AND airplaneid < 10) THEN -- site 2
  119.         INSERT INTO FLIGHT3@LINK_TRUNGDB VALUES (fid, passengerid, airplaneid, TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),fromwhere,towhere);
  120.     ELSIF (passengerid >= 10 AND airplaneid >= 10) THEN -- site 2
  121.         INSERT INTO FLIGHT4@LINK_LONGDB VALUES (fid, passengerid, airplaneid, TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),fromwhere,towhere);
  122.     ELSE
  123.         dbms_output.put_line('Error to insert');
  124.     END IF;
  125.   END;
  126.  
  127. EXEC Insert_Flight(1,1,'2017/01/13 12:10:24','2019/01/13 11:17:10','HN','DN');
  128.  
  129.  
  130. ---------------------------------------UPDATE AIRPORT--------------------
  131.  
  132. DROP PROCEDURE Update_Airport;
  133. CREATE OR REPLACE PROCEDURE Update_Airport(
  134.   airport_Location IN CHAR,
  135.   airportName IN CHAR,
  136.   noOfPlane IN int
  137.   )
  138.   IS
  139.   airportLocation CHAR;
  140.   BEGIN
  141.     SELECT COUNT(location) INTO airportLocation FROM (
  142.       (SELECT location FROM AIRPORT1)
  143.         UNION ALL
  144.       (SELECT location FROM AIRPORT2@LINK_VUDB)
  145.         UNION ALL
  146.       (SELECT location FROM AIRPORT3@LINK_TRUNGDB)
  147.         UNION ALL
  148.       (SELECT location FROM AIRPORT4@LINK_LONGDB)
  149.     ) WHERE location = airport_Location;
  150.     IF (airportLocation > 0 AND airport_Location = 'HN' ) THEN --site 1
  151.     BEGIN
  152.       UPDATE AIRPORT1
  153.       SET numberOfPlane = noOfPlane
  154.       WHERE name = airportName;
  155.     END;
  156.     ELSIF (airportLocation > 0 AND airport_Location = 'HCM') THEN -- site 2
  157.     BEGIN
  158.       UPDATE AIRPORT2@LINK_VUDB
  159.       SET numberOfPlane = noOfPlane
  160.       WHERE name = airportName;
  161.     END;
  162.     ELSIF (airportLocation > 0 AND airport_Location = 'DN') THEN --site 3
  163.     BEGIN
  164.       UPDATE AIRPORT3@LINK_TRUNGDB
  165.       SET numberOfPlane = noOfPlane
  166.       WHERE name = airportName;
  167.     END;
  168.     ELSIF (airportLocation > 0 AND airport_Location = 'Hue') THEN --site 4
  169.     BEGIN
  170.       UPDATE AIRPORT4@LINK_LONGDB
  171.       SET numberOfPlane = noOfPlane
  172.       WHERE name = airportName;
  173.     END;
  174.     END IF;
  175.   END;
  176.  
  177. EXEC Update_Airport ('HN','CS', 100);   --name, location, no.ofplane
  178.  
  179. ----------------FLIGHT------------------
  180. DROP PROCEDURE Update_Flight;
  181. CREATE OR REPLACE PROCEDURE Update_Flight(
  182.   fid IN CHAR,
  183.   passengerid IN int,
  184.   airplaneid IN int,
  185.   departuretime IN CHAR,
  186.   arrivaltime IN CHAR,
  187.   from_where IN CHAR,
  188.   to_where IN CHAR)
  189.   IS
  190.   countid CHAR;
  191.   BEGIN
  192.     SELECT flightid INTO countid FROM (
  193.       (SELECT flightid FROM FLIGHT1)
  194.         UNION ALL
  195.       (SELECT flightid FROM FLIGHT2@LINK_VUDB)
  196.         UNION ALL
  197.       (SELECT flightid FROM FLIGHT3@LINK_TRUNGDB)
  198.         UNION ALL
  199.       (SELECT flightid FROM FLIGHT4@LINK_LONGDB)
  200.     ) WHERE passenger_id = passengerid AND airplane_id = airplaneid;
  201.     IF (passengerid < 10 AND airplaneid <10 ) THEN --site 1
  202.     BEGIN
  203.       UPDATE FLIGHT1
  204.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  205.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  206.       fromwhere = from_where,
  207.       towhere=to_where
  208.       WHERE flightid = countid;
  209.     END;
  210.     ELSIF (passengerid < 10 AND airplaneid >= 10) THEN -- site 2
  211.     BEGIN
  212.       UPDATE FLIGHT2@LINK_VUDB
  213.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  214.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  215.       fromwhere = from_where,
  216.       towhere=to_where
  217.       WHERE flightid = countid;
  218.     END;
  219.     ELSIF (passengerid >= 10 AND airplaneid <10) THEN --site 3
  220.     BEGIN
  221.       UPDATE FLIGHT3@LINK_TRUNGDB
  222.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  223.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  224.       fromwhere = from_where,
  225.       towhere=to_where
  226.       WHERE flightid = countid;
  227.     END;
  228.     ELSIF (passengerid >= 10 AND airplaneid >= 10) THEN --site 4
  229.     BEGIN
  230.       UPDATE FLIGHT4@LINK_LONGDB
  231.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  232.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  233.       fromwhere = from_where,
  234.       towhere=to_where
  235.       WHERE flightid = countid;
  236.     END;
  237.     END IF;
  238.   END;
  239.  
  240.  SELECT * FROM FLIGHT2@LINK_VUDB;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement