Advertisement
Guest User

Untitled

a guest
May 29th, 2019
98
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.   ------ insert airplane---------------
  93.   DROP PROCEDURE Insert_Airplane;
  94. CREATE PROCEDURE Insert_Airplane(airplaneName IN CHAR, noOfSeat IN int, airportID IN int)
  95.   IS
  96.   idAirplane int;
  97.   BEGIN
  98.     SELECT MAX(id) INTO idAirplane FROM (
  99.           (SELECT id FROM AIRPLANE1)
  100.               UNION ALL
  101.           (SELECT id FROM AIRPLANE2@LINK_VUDB)  
  102.               UNION ALL
  103.           (SELECT id FROM AIRPLANE3@LINK_TRUNGDB)  
  104.               UNION ALL
  105.           (SELECT id FROM AIRPLANE4@LINK_LONGDB)
  106.         );  
  107.         idAirplane := idAirplane + 1;
  108.        
  109.     IF (idAirplane < 5) THEN --Dung
  110.         INSERT INTO AIRPLANE1 VALUES (idAirplane, airplaneName, noOfSeat, airportID);
  111.     ELSIF (idAirplane >= 5 AND idAirplane < 10 ) THEN --Vu
  112.         INSERT INTO AIRPLANE2@LINK_VUDB VALUES (idAirplane, airplaneName, noOfSeat, airportID);
  113.     ELSIF (idAirplane >= 10 AND idAirplane < 15) THEN --Trung
  114.         INSERT INTO AIRPLANE3@LINK_TRUNGDB VALUES (idAirplane, airplaneName, noOfSeat, airportID);
  115.     ELSIF (idAirplane >= 15 AND idAirplane < 20) THEN --Long
  116.         INSERT INTO AIRPLANE4@LINK_LONGDB VALUES (idAirplane, airplaneName, noOfSeat, airportID);
  117.     ELSE
  118.         dbms_output.put_line('Error');
  119.     END IF;
  120.   END;
  121.   EXEC Insert_Airplane('trungAIRPLANE55', 500, 56);
  122.  
  123.     -----------------insert flight----------------
  124. SELECT * FROM flight3@link_trungdb;
  125.  
  126.   DROP PROCEDURE Insert_Flight;
  127. CREATE OR REPLACE PROCEDURE Insert_Flight(passengerid IN int, airplaneid IN int, departuretime IN CHAR, arrivaltime IN CHAR, fromwhere IN CHAR, towhere IN CHAR)
  128.   IS
  129.   fid int;
  130.  
  131.   BEGIN
  132.           SELECT MAX(flightid) INTO fid FROM (
  133.           (SELECT flightid FROM flight1)
  134.               UNION ALL
  135.           (SELECT flightid FROM flight2@LINK_VUDB)
  136.               UNION ALL
  137.           (SELECT flightid FROM flight3@LINK_TRUNGDB)  
  138.               UNION ALL
  139.           (SELECT flightid FROM flight4@LINK_LONGDB)        
  140.         );  
  141.         fid := fid + 1;
  142.  
  143.     IF (passengerid < 10 AND airplaneid < 10) THEN --Dung site 1
  144.         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);
  145.     ELSIF (passengerid < 10 AND airplaneid >= 10) THEN -- site 2
  146.         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);
  147.     ELSIF (passengerid >= 10 AND airplaneid < 10) THEN -- site 2
  148.         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);
  149.     ELSIF (passengerid >= 10 AND airplaneid >= 10) THEN -- site 2
  150.         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);
  151.     ELSE
  152.         dbms_output.put_line('Error to insert');
  153.     END IF;
  154.   END;
  155.  
  156. EXEC Insert_Flight(1,1,'2019/01/12 12:10:24','2019/01/13 11:17:10','HCM','DN');
  157. SELECT * FROM Flight1;
  158.  
  159. ---------------------------------------UPDATE AIRPORT--------------------
  160.  
  161. DROP PROCEDURE Update_Airport;
  162. CREATE OR REPLACE PROCEDURE Update_Airport(
  163.   airport_Location IN CHAR,
  164.   airportName IN CHAR,
  165.   noOfPlane IN int
  166.   )
  167.   IS
  168.   airportLocation CHAR;
  169.   BEGIN
  170.     SELECT COUNT(location) INTO airportLocation FROM (
  171.       (SELECT location FROM AIRPORT1)
  172.         UNION ALL
  173.       (SELECT location FROM AIRPORT2@LINK_VUDB)
  174.         UNION ALL
  175.       (SELECT location FROM AIRPORT3@LINK_TRUNGDB)
  176.         UNION ALL
  177.       (SELECT location FROM AIRPORT4@LINK_LONGDB)
  178.     ) WHERE location = airport_Location;
  179.     IF (airportLocation > 0 AND airport_Location = 'HN' ) THEN --site 1
  180.     BEGIN
  181.       UPDATE AIRPORT1
  182.       SET numberOfPlane = noOfPlane
  183.       WHERE name = airportName;
  184.     END;
  185.     ELSIF (airportLocation > 0 AND airport_Location = 'HCM') THEN -- site 2
  186.     BEGIN
  187.       UPDATE AIRPORT2@LINK_VUDB
  188.       SET numberOfPlane = noOfPlane
  189.       WHERE name = airportName;
  190.     END;
  191.     ELSIF (airportLocation > 0 AND airport_Location = 'DN') THEN --site 3
  192.     BEGIN
  193.       UPDATE AIRPORT3@LINK_TRUNGDB
  194.       SET numberOfPlane = noOfPlane
  195.       WHERE name = airportName;
  196.     END;
  197.     ELSIF (airportLocation > 0 AND airport_Location = 'Hue') THEN --site 4
  198.     BEGIN
  199.       UPDATE AIRPORT4@LINK_LONGDB
  200.       SET numberOfPlane = noOfPlane
  201.       WHERE name = airportName;
  202.     END;
  203.     END IF;
  204.   END;
  205.  
  206. EXEC Update_Airport ('HN','CS', 100);   --name, location, no.ofplane
  207.  
  208. ----------------Update FLIGHT------------------
  209. DROP PROCEDURE Update_Flight;
  210. CREATE OR REPLACE PROCEDURE Update_Flight(
  211.   fid IN CHAR,
  212.   passengerid IN int,
  213.   airplaneid IN int,
  214.   departuretime IN CHAR,
  215.   arrivaltime IN CHAR,
  216.   from_where IN CHAR,
  217.   to_where IN CHAR)
  218.   IS
  219.   countid int;
  220.   BEGIN
  221.     SELECT MAX(flightid) INTO countid FROM (
  222.       (SELECT flightid,passenger_id,airplane_id FROM FLIGHT1)
  223.         UNION ALL
  224.       (SELECT flightid,passenger_id,airplane_id FROM FLIGHT2@LINK_VUDB)
  225.         UNION ALL
  226.       (SELECT flightid,passenger_id,airplane_id FROM FLIGHT3@LINK_TRUNGDB)
  227.         UNION ALL
  228.       (SELECT flightid,passenger_id,airplane_id FROM FLIGHT4@LINK_LONGDB)
  229.     ) WHERE passenger_id = passengerid AND airplane_id=airplaneid;
  230.     IF (passengerid < 10 AND airplaneid <10 ) THEN --site 1
  231.     BEGIN
  232.       UPDATE FLIGHT1
  233.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  234.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  235.       fromwhere = from_where,
  236.       towhere=to_where
  237.       WHERE flightid = countid;
  238.     END;
  239.     ELSIF (passengerid < 10 AND airplaneid >= 10) THEN -- site 2
  240.     BEGIN
  241.       UPDATE FLIGHT2@LINK_VUDB
  242.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  243.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  244.       fromwhere = from_where,
  245.       towhere=to_where
  246.       WHERE flightid = countid;
  247.     END;
  248.     ELSIF (passengerid >= 10 AND airplaneid <10) THEN --site 3
  249.     BEGIN
  250.       UPDATE FLIGHT3@LINK_TRUNGDB
  251.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  252.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  253.       fromwhere = from_where,
  254.       towhere=to_where
  255.       WHERE flightid = countid;
  256.     END;
  257.     ELSIF (passengerid >= 10 AND airplaneid >= 10) THEN --site 4
  258.     BEGIN
  259.       UPDATE FLIGHT4@LINK_LONGDB
  260.       SET departure_time = TO_DATE(departuretime,'yyyy/mm/dd HH:MI:SS'),
  261.       arrival_time = TO_DATE(arrivaltime,'yyyy/mm/dd HH:MI:SS'),
  262.       fromwhere = from_where,
  263.       towhere=to_where
  264.       WHERE flightid = countid;
  265.     END;
  266.     END IF;
  267.   END;
  268.  
  269.  EXEC Update_Flight(3,1,1,'2017/01/20 10:10:09','2018/01/09 12:10:18','HN','Hue');
  270.  SELECT * FROM FLIGHT1;
  271.  
  272.  
  273. ---delete airplane
  274. DROP PROCEDURE deleteAirplane;
  275. CREATE PROCEDURE deleteAirplane (
  276. aID IN int
  277. )
  278. IS
  279. a_ID int;
  280. BEGIN
  281. SELECT MAX(id) INTO a_ID FROM (
  282.   (SELECT id FROM airplane1)
  283.   UNION ALL
  284. (SELECT id FROM airplane2@link_vudb)
  285.   UNION ALL
  286.   (SELECT id FROM airplane3@link_trungdb)
  287.   UNION ALL
  288.   (SELECT id FROM airplane4@link_longdb)
  289.   );
  290.    IF(a_ID <5) THEN
  291.    BEGIN
  292.    DELETE FROM airplane1
  293.    WHERE id = aID;
  294.    END;
  295.    ELSIF(a_id >=5 AND a_id <10) THEN
  296.    BEGIN
  297.    DELETE FROM airplane2@link_vudb
  298.    WHERE id = aID;
  299.    END;
  300.    ELSIF (a_id >=10 AND a_ID<15) THEN
  301.    BEGIN
  302.    DELETE FROM airplane3@link_trungdb
  303.    WHERE id=aid;
  304.    END;
  305.    ELSIF (a_id>=15 AND a_id <20) THEN
  306.    BEGIN
  307.    DELETE FROM airplane4@link_longdb
  308.    WHERE id=aid;
  309.    END;
  310.    END IF;
  311. END;
  312.  
  313. EXEC deleteairplane(10); --id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement