Safiron

2. příklad - Procedura

Mar 25th, 2012
417
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.97 KB | None | 0 0
  1. USE [student]
  2. GO
  3. /****** Object:  StoredProcedure [urb0061].[PrintReport]    Script Date: 03/25/2012 11:03:17 ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8.  
  9. ALTER procedure [urb0061].[PrintReport] (@p_pocatecniStanice varchar(60), @p_koncovaStanice varchar(60), @p_od time, @p_do time, @p_datum date)
  10. as
  11. begin
  12.     declare @v_name varchar(20);    -- NÁZEV VLAKU
  13.     declare @v_sTime time;          -- ČAS VYJEZDU
  14.     declare @v_eTime time;          -- ČAS PŘÍJEZDU
  15.     declare @v_price float;         -- CENA
  16.     declare @v_idstation int;       -- ID STANICE
  17.     declare @v_idstation1 int;      -- ID CÍLOVÉ STANICE
  18.     Deallocate c_vlaky;             -- PSALO MI TO ŽE, 'CURSOR EXIST' TAKŽE HO MUSÍM SMAZAT NA ZAČÁTKU VŽDYCKY NEVÍM PROČ (MS SUCKS)
  19.    
  20.     select @v_idstation = Station.idStation From Station Where Station.name = @p_pocatecniStanice;  -- PŘEVADÍM SLOVNÍ NÁZEV STANICE NA JEJÍ ID
  21.     select @v_idstation1 = Station.idStation From Station Where Station.name = @p_koncovaStanice;   -- PŘEVADÍM SLOVNÍ NÁZEV CÍLOVÉ STANICE NA JEJÍ ID
  22.    
  23.     -- SPOJÍM 3 TABULKY A VYPODMÍNKUJU PODLE ČASŮ, DATUMU A STANIC
  24.     declare c_vlaky cursor for select Train.name, Train.startTime, Train.endTime, Train.price from Train
  25.                                 join Station on Train.idStation = Station.idStation
  26.                                 join TrainRide on Train.idTrain = TrainRide.idTrain
  27.                                 where Train.startTime > @p_od and Train.endTime < @p_do
  28.                                                                     and TrainRide.rideDate = @p_datum
  29.                                                                     and Train.idStation = @v_idstation and Train.idStation1 = @v_idstation1;
  30.                                                                        
  31.     declare @v_pocetvlaku int-- DRŽÍ POČET NALEZENÝCH VLAKŮ
  32.    
  33.     -- VLOŽÍM POČET NALEZENÝCH VLAKŮ DO PROMĚNNÉ
  34.     select @v_pocetvlaku = COUNT(distinct(train.idTrain)) from Train
  35.                                 join Station on Train.idStation = Station.idStation
  36.                                 join TrainRide on Train.idTrain = TrainRide.idTrain
  37.                                 where Train.startTime > @p_od and Train.endTime < @p_do
  38.                                                                     and TrainRide.rideDate = @p_datum
  39.                                                                     and Train.idStation = @v_idstation and Train.idStation1 = @v_idstation1;
  40.    
  41.     -- VÝPISY:                                                            
  42.     print 'Počet nalezených vlaků: ' + CAST ( @v_pocetvlaku AS varchar);
  43.     print 'Z: ' + CAST ( @p_pocatecniStanice AS varchar);
  44.     print 'Do: ' + CAST ( @p_koncovaStanice AS varchar);   
  45.     print 'Od: ' + CAST ( @p_od AS varchar (8));
  46.     print 'Do: ' + CAST ( @p_do AS varchar (8));
  47.     print 'Dne: ' + CAST ( @p_datum AS varchar);       
  48.     print '-------------------------';
  49.    
  50.     -- PROCHÁZÍM CURSOR
  51.     open c_vlaky;
  52.     fetch next from c_vlaky into @v_name, @v_sTime, @v_eTime, @v_price;
  53.     while @@FETCH_STATUS = 0
  54.         begin
  55.             print 'Název vlaku: ' + @v_name;
  56.             print 'Čas výjezdu: ' + cast (@v_sTime as varchar (8));
  57.             print 'Čas dojezdu: ' + cast (@v_eTime as varchar (8));
  58.             print 'Cena 2. třída: ' + cast (@v_price as varchar);
  59.             print 'Cena 1. třída: ' + cast (@v_price * 1.5 as varchar);
  60.             print '---';
  61.             fetch next from c_vlaky into @v_name, @v_sTime, @v_eTime, @v_price;
  62.         end
  63.     close c_vlaky;                                                 
  64. end
Advertisement
Add Comment
Please, Sign In to add comment