mysql_real_escape_string / Говнокод #14551 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
  89. 89
  90. 90
  91. 91
  92. 92
  93. 93
  94. 94
  95. 95
  96. 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'

курсор головного мозга 2.0

Запостил: bahamot bahamot, (Updated )

Комментарии (51) RSS

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8