13694 ullman209 (2)

13694 ullman209 (2)



którego zakresem ma być wynik przetworzenia zapytania zdefiniowanego w wierszu 8), a które służy do wy boru wartości sieci wszystkich dyrektorów. Ten kursor zostaje uruchomiony w wierszu 9). W wierszu 10) kończy się faza inicjowania przez wyzerowanie elementów tablicy liczniki.

1)    void zakresyWartości() {

2)    int i, cyfry, liczniki[15];

3)    EXEC SQL REGIN DECLARE SEC7I0N;

4)    int cena;

5)    char SQLSTA7E[6);

6)    EXEC SQL END DECLARE SECTION;

7)    EXEC SQL DECLARE dyrKursor CURSOR FOR 8> SELECT cgnaSieci EROM FilmDyr;

9) EXEC 3QL CPEN dyrKursor;

10)    for (i =0; i < 15; i++) liczniki[i] = 0;

11)    whileU) {

12)    EXEC    SQL FETCH EROM dyrKursor TNTO :cena;

13)    if (BRAK_NOWYCH_KROTEK) break;

14)    cyfry = 1;

15)    while {(cena /= 10) > 0) cyfry++;

16)    if( cyfry <= 14) liczniki{cyfry]++;

)

17)    EXEC £QL CLOSE dyrKursor;

18)    for(i = 0; i < 15; i++)

19)    printf(„cyfry = %d: liczba dyrektoróv; = %a\n",

i, liczniki[ i j );

}

RYSUNEK 7.4

Grupowanie wartości sieci dyrektorów według rzędów wielkości

Główne zadania są wykonywane za pomocą pętli zapisanej w wierszach od 11) do 16). W wierszu 12) krotka bieżąca jest przechwytywana do zmiennej dzielonej cena. Ponieważ krotki powstające w wyniku przetworzenia zapytania z wiersza 8) mają tylko po jednej składowej, więc jest potrzebna tytko jedna zmienna dzielona w myśl zasady, że trzeba stosować tyle zmiennych dzielonych, z ilu składowych jest złożona przechwycona krotka. W wierszu 13) zachodzi sprawdzenie, czy przechwycenie krotki powiodło się. Korzystamy w tymi celu z makra o nazwie BRAK_NOWYCH_KROTEK, które zapewne jest zdefiniowane w następujący sposób:

#def ine BRAK_NOWYCH_KROTEK ! (strcrap (SQLS?ATE,

02000"))

Przypomnijmy tu. że kod „02000" zmiennej SQLSTATE oznacza, że nie w szukano żadnej krotki. A zatem w wierszu 13) następuje sprawdzenie, czyj wszystkie krotki zostały' zanalizowane i czy' w związku z tym nie ma już ża nej następnej krotki do przetworzenia. Jeśli tak jest, to pętla zostaje przerwa i sterowanie zostaje przekazane do wiersza 17).

Jeśli natomiast pewna krotka zostanie sprowadzona do programu po stawowego, to w wierszu 14) liczba cyfr wartości ceny sieci zostaje zainicj wana na 1. W wierszu 15) zapisano instrukcje iteracyjnego dzielenia wartoś sieci przez 10 i dodawania 1 do zmiennej cyfry. W chwili gdy cena sie osiągnie wartość 0, po kolejnym podzieleniu przez 10, w zmiennej cyfi znajduje się liczba określająca liczbę cyfr wartości zmiennej cena. Zakła< się, że długość liczb całkowitych nie przekracza 14 cyfr. Gdyby jednak zd rzyło się, że cena sieci ma więcej niż 14 cyfr, to i wartość odpowiedniej elementu tablicy liczniki nic zostanie zwiększona, co zapewnia stosowi warunek, a więc nadspodziewanie wysokie wartości sieci nie są uwzględniał w statystyce.

W wierszu 17) zostało zapisane zakończenie fragmentu obliczeniowej funkcji. Kursor zostaje zamknięty, a instrukcje, zapisane w wierszach 1 i 19), służą do wydrukowania wartości z tablicy liczniki.

7.1.7. Dokonywanie modyfikacji za pomocą kursorów

Po przypisaniu kursora do pewnego zakresu krotek w tabeli podstawo w (tzn. do relacji zapamiętanej w bazie danych, a nie do perspektywy lub wyn ku zapytania) można nie tylko odczy tywać i przetwarzać wartości zapamięt; ne w tej relacji, ale można także zmieniać lub usuwać krotki. Składnia ii strukcji UPDATE oraz DELETE jest praw ie taka, jaką poznaliśmy w podro; dziale 5.6, inaczej zapisuje się tylko klauzulę a’HE RE. Jest ona w tym prz; padku złożona ze słowa kluczowego w.HERE CURREN? CF, po którym poda się nazwę kursora. Oczywiście można z poziomu języka podstawowego zd< cydować, czy analizowana krotka ma być zmieniona lub usunięta, lub też nie

PRZYKŁAD 7.5

Na rysunku 7.5 umieszczono zapis definicji funkcji zbliżonej do tej, któi przedstawiono na rys. 7.4. W obu został zadeklarowany kursor dyrKurso: który' służy do odczytu krotek z relacji Fi ImDyr. Na rysunku 7.5 służy' o jednak do rozstrzygnięcia, czy' analizowana krotka ma zostać usunięta z rei; cji, czy też należy w niej podwoić cenę sieci.


Wyszukiwarka

Podobne podstrony:
M 0 90 Andrzej Zero - Muthcad 7.0 4. Obliczenia 91 którego suma ma być policzona, a na zakończenie n
gdzie sigtype jest liczbą całkowitą albo literałem określającym sygnał, którego akcja ma być
Bufory - przygotowywanie Na jakie pH, jaka ilość, jakie stężenie? W jakim zakresie ma być stabilne p
s 28 Ponieważ wycieczka ma być długa, Duszki postanowiły zabrać ze sobq coś do jedzenia. Pomóż im sp
ZAŁĄCZNIK 3-2 Karta pracy Każdy z nas ma być światłem świata. Wskaż te fotografie, które
MODYFIKATORY PRZETWARZANIA Ta grupa środków pomocniczych służy do poprawy właściwości Teologicznych
DSC57 Dzień wolny od pracy - buddyzm nie ma określonego dnia wolnego; jest czymś złym, bo służy do
ullman208 (2) 422 7. SYSTEMOWE ASPEKTY JĘZYKA SQL PRZYKŁAD 7.3 Przedstawimy tu funkcję C. która służ
assembler?86? 9 ??0001 178 6. Makro język asemblera MA SM DEC ZMIENNA INC SI Operator & Operat
GK (17) Poziom, jaki dziecko ma osiągnąć „ tak ma być ” Treści zawarte w I programie, którego r
1.    «wzór, według którego coś jest lub ma być wykonane» 2.    «typ l
wskazaniem obszaru wiedzy, dziedziny i dyscypliny naukowej, w zakresie której ma być otwarty
DSC00160 (2) prądem stałym, którego napięcie może być regulowane w zakresie od 0 V do 20 V. W obwód

więcej podobnych podstron