- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
-- Процедура формирования таблицы анализа по FIR
CREATE PROCEDURE KojevnikovFir @DateFo varchar(10), @DateTo varchar(10)
AS DECLARE @Polet int, @ProcPolet numeric(4,2)
-- определяю кол-во выполненных рейсов в диапазоне дат----
SET @Polet = (SELECT DISTINCT Count(ID) FROM PPLS WHERE
( ( FLI_ENTRY=1 or FLI_EXIT=1 ) or (DEP=1 and DEP_AERODROME like'UK%' ) or
(ARR=1 and DEST_AERODROME Like'UK%') ) and (ENTRY_TIME >=@DateFo and ENTRY_TIME <=@DateTo))
----------- Начало формирования таблицы FIR-------------------
-- Создаем SCROLL курсор 1 для чтения
DECLARE Cursor_All_Pol CURSOR SCROLL KEYSET TYPE_WARNING FOR SELECT Marsrut,All_Polet FROM Marsr_All_Pol FOR READ ONLY
-- Открытие курсора 1 и наполнение его данными
OPEN Cursor_All_Pol DECLARE @Marsrut char(11), @All_Polet int,@Count1 int,@Count1_end int
SET @Count1=1 SET @Count1_end = @@CURSOR_ROWS
-- ===========обьявляю и заполняю курсор по 2 таблице==============
DECLARE Cursor_Air CURSOR SCROLL KEYSET TYPE_WARNING FOR SELECT Marsrut,TYPE_AIRCRAFT,kol_TypeAirFROM Marsr_kol_Air FOR READ ONLY
-- Открытие курсора 2 и наполнение его данными
OPEN Cursor_Air
DECLARE @MarsrutAir char(11),@Type nvarchar(4), @Air_Polet int,@Count2 int,@Count2_end int
SET @Count2 = 0 SET @Count2_end = @@CURSOR_ROWS
-- ===========обьявляю и заполняю курсор по 3 таблице==============
DECLARE Cursor_AK CURSOR SCROLL KEYSET TYPE_WARNING
FOR SELECT Marsrut,ICAO,AK,kol_AK
FROM dbo.Marsr_kol_AK
FOR READ ONLY
-- Открытие курсора 2 и наполнение его данными
OPEN Cursor_AK
DECLARE @MarsrutAK char(11),@ICAO char(3),@AK varchar(60),@kol_AK int,@Count3 int,@Count3_end int
SET @Count3 = 0 SET @Count3_end = @@CURSOR_ROWS
-- цикл по первому курсору
WHILE @Count1 < @Count1_end BEGIN
-- на 1 запись курсора 1
FETCH NEXT FROM Cursor_All_Pol INTO @Marsrut, @All_Polet
-- вставляю строку маршрута и кол-ва полетов в таблицу
SET @ProcPolet = ((@All_Polet * 100)/@Polet)
INSERT KojevnikovAnalizFIR (Marsrut,All_Polet,PrcAll,TYPE_AIRCRAFT,kol_TypeAir,ICAO,AK,kol_AK)
VALUES (@Marsrut,@All_Polet,@ProcPolet,null,null,null,null,null)
SET @Count1 = @Count1 + 1
-- =============начало=================-- цикл по второму курсору
FETCH FIRST FROM Cursor_Air INTO @MarsrutAir,@Type,@Air_Polet
SET @Count2 = 1
-- Формирую 1 строку маршрут + ВС
IF @Marsrut = @MarsrutAir BEGIN
INSERT KojevnikovAnalizFIR (Marsrut,All_Polet,PrcAll,TYPE_AIRCRAFT,kol_TypeAir,ICAO,AK,kol_AK)
VALUES (null,null,null,@Type,@Air_Polet,null,null,null)
END --IF
WHILE @Count2 < @Count2_end BEGIN
-- увеличиваю счетчик курсора 2
FETCH NEXT FROM Cursor_Air INTO @MarsrutAir,@Type,@Air_Polet
-- Формирую строку маршрут + ВС
IF @Marsrut = @MarsrutAir BEGIN
INSERT KojevnikovAnalizFIR (Marsrut,All_Polet,PrcAll,TYPE_AIRCRAFT,kol_TypeAir,ICAO,AK,kol_AK)
VALUES (null,null,null,@Type,@Air_Polet,null,null,null)
END --IF
-- закрываю цикл WHILE 2 (второй курсор)
SET @Count2 = @Count2 + 1 END
-- =============конец===================
-- =============начало=================
-- цикл по третьему курсору
FETCH FIRST FROM Cursor_AK INTO @MarsrutAK,@ICAO,@AK,@kol_AK
SET @Count3 = 1
-- Формирую 1 строку маршрут + АК
IF @Marsrut = @MarsrutAK BEGIN
INSERT KojevnikovAnalizFIR (Marsrut,All_Polet,PrcAll,TYPE_AIRCRAFT,kol_TypeAir,ICAO,AK,kol_AK)
VALUES (null,null,null,null,null,@ICAO,@AK,@kol_AK)
END --IF
WHILE @Count3 < @Count3_end BEGIN
-- увеличиваю счетчик курсора 3
FETCH NEXT FROM Cursor_AK INTO @MarsrutAK,@ICAO,@AK,@kol_AK
-- Формирую строку маршрут + ВС
IF @Marsrut = @MarsrutAK BEGIN
INSERT KojevnikovAnalizFIR (Marsrut,All_Polet,PrcAll,TYPE_AIRCRAFT,kol_TypeAir,ICAO,AK,kol_AK)
VALUES (null,null,null,null,null,@ICAO,@AK,@kol_AK)
END --IF
-- закрываю цикл WHILE 2 (второй курсор)
SET @Count3 = @Count3 + 1 END
-- =============конец===================
-- закрываю цикл WHILE 1 (первый курсор)
END
-- Закрываю курсор 2
CLOSE Cursor_Air
-- Удаляю курсор 1 как обьект
DEALLOCATE Cursor_Air
-- Закрываю курсор 3
CLOSE Cursor_AK
-- Удаляю курсор 1 как обьект
DEALLOCATE Cursor_AK
-- Закрываю курсор
CLOSE Cursor_All_Pol
-- Удаляю курсор 1 как обьект
DEALLOCATE Cursor_All_Pol
------------Конец--------------------
GO
select * from KojevnikovAnalizFIR
truncate table dbo.KojevnikovAnalizFIR
DELETE from KojevnikovAnalizFIR
exec dbo.KojevnikovFir '2004-01-01','2004-01-05'
Konardo 13.02.2014 00:03 # −5
anonimb84a2f6fd141 13.02.2014 20:09 # −2
anonimb84a2f6fd141 13.02.2014 20:15 # −2
wvxvw 13.02.2014 09:29 # +1
Как-то вообще странно: в моем наивном представлении ДБА - это такой убеленный сединами старец, единственный на предприятии, который действительно знает как оно работает и что производит, ну вроде сисадмина по отношению к секретаршам, так вот он по отношению к программистам.
bormand 13.02.2014 09:44 # +1
anonimb84a2f6fd141 13.02.2014 20:08 # −2
anonimb84a2f6fd141 13.02.2014 20:15 # −2
Stertor 13.02.2014 20:17 # −1
anonimb84a2f6fd141 13.02.2014 20:19 # −3
anonimb84a2f6fd141 13.02.2014 20:23 # −3
anonimb84a2f6fd141 13.02.2014 20:24 # −3
anonimb84a2f6fd141 13.02.2014 20:24 # −3
anonimb84a2f6fd141 13.02.2014 20:25 # −3
anonimb84a2f6fd141 13.02.2014 20:27 # −3
anonimb84a2f6fd141 13.02.2014 20:42 # −3
anonimb84a2f6fd141 13.02.2014 20:43 # −3
anonimb84a2f6fd141 13.02.2014 20:44 # −3
anonimb84a2f6fd141 13.02.2014 20:46 # −3
anonimb84a2f6fd141 13.02.2014 20:48 # −3
anonimb84a2f6fd141 13.02.2014 20:54 # −3
anonimb84a2f6fd141 13.02.2014 20:55 # −3
anonimb84a2f6fd141 13.02.2014 20:55 # −3
anonimb84a2f6fd141 13.02.2014 20:57 # −3
anonimb84a2f6fd141 13.02.2014 20:58 # −3
anonimb84a2f6fd141 13.02.2014 20:59 # −3
anonimb84a2f6fd141 13.02.2014 20:59 # −3
anonimb84a2f6fd141 13.02.2014 21:00 # −3
anonimb84a2f6fd141 13.02.2014 21:00 # −3
anonimb84a2f6fd141 13.02.2014 21:01 # −3
anonimb84a2f6fd141 13.02.2014 21:01 # −3
anonimb84a2f6fd141 13.02.2014 21:02 # −3
anonimb84a2f6fd141 13.02.2014 21:02 # −3
anonimb84a2f6fd141 13.02.2014 21:03 # −3
anonimb84a2f6fd141 13.02.2014 21:04 # −3
anonimb84a2f6fd141 13.02.2014 21:04 # −3
anonimb84a2f6fd141 13.02.2014 21:06 # −3
anonimb84a2f6fd141 13.02.2014 21:06 # −3
anonimb84a2f6fd141 13.02.2014 21:07 # −3
anonimb84a2f6fd141 13.02.2014 21:08 # −3
anonimb84a2f6fd141 13.02.2014 21:08 # −3
anonimb84a2f6fd141 13.02.2014 21:09 # −3
anonimb84a2f6fd141 13.02.2014 21:09 # −3
anonimb84a2f6fd141 13.02.2014 21:10 # −3
Lokich 13.02.2014 17:23 # +1
Stertor 13.02.2014 17:27 # −4
anonimb84a2f6fd141 13.02.2014 20:08 # −10
DBdev 13.02.2014 20:05 # −1
anonimb84a2f6fd141 13.02.2014 20:08 # −11
anonimb84a2f6fd141 13.02.2014 20:12 # −2
anonimb84a2f6fd141 13.02.2014 20:12 # −2
TarasB 13.02.2014 21:14 # +1
у стертора