Advertisement
HenX

CHECK_TRAIN_RIDE

Feb 29th, 2012
347
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PL/SQL 1.17 KB | None | 0 0
  1. CREATE OR REPLACE
  2. FUNCTION checkTrainRide (
  3.     v_idTrainRide traincrew.idtrainride%TYPE
  4.     ) RETURN BOOLEAN AS
  5.  
  6.   s BOOLEAN;
  7.   g BOOLEAN;
  8.   d BOOLEAN;
  9.   sCounter INT;
  10.   myCoachCounter INT;
  11. BEGIN
  12.  
  13. s := FALSE;
  14. g := FALSE;
  15. d := FALSE;
  16. sCounter := 0;
  17.  
  18.   FOR cur IN (SELECT
  19.                 staff.position
  20.               FROM
  21.                 Staff
  22.                   INNER JOIN
  23.                   TrainCrew ON traincrew.idstaff = staff.idstaff
  24.                   WHERE traincrew.idTrainRide = v_idTrainRide) LOOP
  25.                    
  26.   IF(cur.position = 's') THEN
  27.     s := TRUE;
  28.     sCounter := sCounter + 1;
  29.   END IF;
  30.  
  31.   IF(cur.position = 'd') THEN
  32.     d := TRUE;
  33.   END IF;
  34.  
  35.   IF(cur.position = 'g') THEN
  36.     g := TRUE;
  37.    
  38.   END IF;
  39.   END LOOP;
  40.  
  41.   SELECT
  42.     train.coachCount
  43.   INTO
  44.     myCoachCounter
  45.   FROM
  46.     Train
  47.     INNER JOIN
  48.       TrainRide ON TrainRide.idTrain = Train.idTrain
  49.       WHERE TrainRide.idTrainRide = v_idTrainRide;
  50.  
  51.   IF (s = TRUE AND d = TRUE AND g = TRUE) THEN
  52.     IF(sCounter = myCoachCounter) THEN
  53.       RETURN TRUE;
  54.     ELSE
  55.       RETURN FALSE;
  56.       END IF;
  57.   ELSE
  58.     RETURN FALSE;
  59.   END IF;
  60. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement