У вас вопросы?
У нас ответы:) SamZan.net

Ужгороддержкордон 2 1400 3 ОстрогожськГадяч 2 1000 4 ЄлецькОрел

Работа добавлена на сайт samzan.net: 2016-03-13

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 27.4.2025

PAGE  3

        13 Вкладені алгоритми

    Задача 4. Виготовити звіт про сумарний об’єм транспортованого газу за поточний рік по кожному підприємству для заданого газопровода. До заголовка звіту додати назву газопроводу, слова “станом на” і встановити поточну дату.

        Таблиця gazpr (газопроводи):

1   Україна                                         1   1400

2   Ямпіль-Ужгород-держкордон     2   1400

3   Острогожськ-Гадяч                     2   1000

4   Єлецьк-Орел                               7   1200

5   Єлецьк-Десна-Кривий Ріг           5   1600

        Таблиця pidpr (підприємства):

1  Харківтрансгаз              Харків        

2  Прикарпаттрансгаз       Івано-Франківськ         

3  Київтрансгаз                  Київ                    

4  Львівтрансгаз                Львів          

5  Експорттрансгаз           Ужгород    

        Таблиця оblik (облік):

2    2    2005-04-12    2

2    2    2012-04-12    2

2    5    2012-02-11    1

3    5    2012-09-10    3

2    5    2012-07-01    4

        Zvit_cykl без курсора:

CREATE OR REPLACE FUNCTION zvit_cykl(integer)

RETURNS text AS

$$

DECLARE

zapysp pidpr %ROWTYPE; zapyso oblik %ROWTYPE; zapysg gazpr %ROWTYPE;

name_g gazpr.naz_g %TYPE; kod ALIAS FOR $1;

den INTEGER; mis INTEGER; rik INTEGER; ms CHARACTER(9) ARRAY[12];

slovo TEXT; s REAL; b BOOL;

BEGIN

den:=EXTRACT(DAY FROM CURRENT_DATE);

mis:=EXTRACT(MONTH FROM CURRENT_DATE);

rik:=EXTRACT(YEAR FROM CURRENT_DATE);

ms[1]:='січня'; ms[2]:='лютого'; ms[3]:='березня'; ms[4]:='квітня';

ms[5]:='травня'; ms[6]:='червня'; ms[7]:='липня'; ms[8]:='серпня';

ms[9]:='вересня'; ms[10]:='жовтня'; ms[11]:='листопада'; ms[12]:='грудня';

SELECT INTO name_g naz_g FROM gazpr WHERE kod_g = kod;

slovo:='                                         Звіт'||E'\n';

slovo:=slovo ||'про кількість транспортованого газу по газопроводу '||name_g||E'\n';

slovo:=slovo ||'станом на '||TO_CHAR(den,'99')||' '||ms[mis]||' '|| TO_CHAR(rik, '9999')||E'\n\n';

slovo:=slovo ||'Підприємство                  Кількість'||E'\n';

slovo:=slovo ||'-----------------------------------------------'||E'\n';

FOR zapysp IN SELECT * FROM pidpr ORDER BY naz_p LOOP

s:=0;

FOR zapyso IN SELECT * FROM oblik LOOP

b:=zapyso.kod_g=kod;

b:=b AND zapyso.kod_p=zapysp.kod_p;

b:=b AND rik=EXTRACT(YEAR FROM zapyso.data);

IF b THEN s:=s+zapyso.kilk; END IF;

END LOOP;

IF s>0 THEN slovo:=slovo||zapysp.naz_p||'           '||TO_CHAR(s, '99.9')||E'\n';

END IF;

END LOOP;

RETURN slovo;

END;

$$

LANGUAGE plpgsql;

select zvit_cykl(2);

                                                      Звіт

про кількість транспортованого газу по газопроводу Ямпіль-Ужгород-держкордон

станом на  17 листопада  2012 року

Підприємство                  Кількість

-----------------------------------------------

Експорттрансгаз             5.0

Прикарпаттрансгаз         2.0

    Задача 6. Виготовити звіт про розподіл кількості транспортованого газу на кожному газопроводі по підприємствах у поточному році. Навпроти назв газопроводів установити значення кількості для кожного підприємства. Передбачити підсумки по вертикалі і по горизонталі.

1  Україна                                     8 1400

3  Уренгой-Помари-Ужгород    6 1800

4  Гадяч-Париж                           7 1500

5  Гадяч-держкордон                  2   800

2  Єлецьк-Орел                            8    123

1  Київтрансгаз             Київ       

2  Гадячгазпром            Полтава    

3  Львівгазпром            Львів         

4  Прикарпаттрансгаз   Галич         

1  2  3  2010-06-12

2  2  5  2011-06-12

3  2  3  2012-07-31

4  2  5  2011-09-21

2  3  4  2012-06-13

9  4  2  2009-10-25

3  3  5  2012-12-16

2  2  2  2012-11-15

        Звіт про розподіл:

CREATE OR REPLACE FUNCTION vklc_rozpod() RETURNS text AS

$$

DECLARE

zapysp pidpr %ROWTYPE; zapyso oblik %ROWTYPE; zapysg gazpr %ROWTYPE;

slovo TEXT; s oblik.kilk %TYPE; suma oblik.kilk %TYPE; b BOOL:=FALSE;

sss oblik.kilk %TYPE:=0; ss INTEGER ARRAY[5]; i integer;

BEGIN

slovo:=repeat(' ', 40)||'Звіт'||E'\n';

slovo:=slovo ||repeat(' ', 15)||'про розподіл кількості транспортованого газу по підприємствах' ||E'\n'||E'\n';

slovo:=slovo ||'Підприємство:          ';

FOR zapysp IN SELECT * FROM pidpr LOOP

slovo:=slovo ||rpad(zapysp.naz_p,15);

END LOOP;

slovo:=slovo ||'   Сума   '||E'\n';

ss[1]:=0; ss[2]:=0; ss[3]:=0; ss[4]:=0; ss[5]:=0;

FOR zapysg IN SELECT * FROM gazpr LOOP

slovo:=slovo || rpad(zapysg.naz_g, 20) ||' '; suma:=0; i:=1;

FOR zapysp IN SELECT * FROM pidpr LOOP

s:=0;

FOR zapyso IN SELECT * FROM oblik LOOP

b:=zapyso.kod_g=zapysg.kod_g AND zapyso.kod_p=zapysp.kod_p;

IF b THEN s:=s+zapyso.kilk;END IF;

END LOOP; suma:=suma+s; ss[i]:=ss[i]+s; i:=i+1;

slovo:=slovo||TO_CHAR(s,'999999999999')||'  ';

END LOOP; i:=1;

slovo:=slovo||TO_CHAR(suma,'9999999')||E'\n';

ss[5]:=ss[5]+suma;

END LOOP;

slovo:=slovo ||repeat(' ', 14)||'Всього'||TO_CHAR(ss[1],'9999999999999')||  

                                                            TO_CHAR(ss[2],'99999999999999');

slovo:=slovo ||TO_CHAR(ss[3],'99999999999999')||TO_CHAR(ss[4],'99999999999999');

slovo:=slovo ||TO_CHAR(ss[5],'999999999')||E'\n';

RETURN slovo;

END;

$$

 LANGUAGE plpgsql;

SELECT vklc_rozpod();

                                                                   Звіт

                       про розподіл кількості транспортованого газу по підприємствах

Підприємство:                Київтрансгаз   Гадячгазпром   Львівгазпром   Прикарпаттрансг   Сума   

Україна                                      0                        3                         0                               0                 3

Уренгой-Помари-Ужгор          0                        3                         5                               0                 8

Гадяч-Париж                             0                        5                         0                               0                 5

Гадяч-держкордон                    0                        0                         0                               0                 0

Єлецьк-Орел                             0                         7                         4                               0               11

                             Всього          0                      18                          9                               0               27

 




1. Философия и культура
2. денатурация белка Назовите структурную единицу ответственную за синтез определенной молекулы белка
3. Контрольная работа по предмету Теория бухгалтерского учёта Описание задачи Контрольная работа за
4. Расчет параметров трансформатор
5. І. КМСГмех Кокорин О
6. Реферат Этнические общности
7. 15-07-2014 CULT-ENVI 510 1928 WC 18 LYVG SVNETI SVNETI09-08 19-08-2014 CULT-ENVI 510 1928 WC 21 LYVG GLFCU rdquo;RTWELIrdquo; KKHETI 09-09 1
8. ТУЛЬСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТИНСТИТУТ ВЫСОКОТОЧНЫХ СИСТЕМ им
9. модуль 2 Рослинні тканини 1
10. 2 3 4 КИСИ Политический статус центра.html