cjwi>ł ru>rii«v i i jr/. i iwł JVL
a następnie wykonuje. Zapytanie jest przechowywane w zmiennej tekstowej SQL-zapytanie. Ponieważ to zapytanie w całym programie jest przetwarzanie tylko jeden raz. więc wiersze 6) i 7) z rys. 7.7 można zastawić pojedynczą następującą instrukcją:
EXEC SQL EXF.CUTE 1MMEDIATE : zapytanie;
□
Ćwiczenie 7.1.1. Korzystając ze schematu bazy danych z ćwiczenia 4.1.1
Produkt(producent, model, typ)
PC(model, szybkość, ram, hd, cd, cena)
Laptop(model, szybkość, ram, hd, ekran, cena)
Drukarka(model, kolor, typ, cena)
należy utworzyć osadzone zapytania SQL. Można korzystać z dowolnego znanego języka podstawowego, a szczegółowe instrukcje można zastąpić czytelnym komentarzem.
*a) Należy użytkownika prosić o cenę i wyszukać te wszystkie PC. których cena jest najbliższa podanej wartości. Należy wydrukować producenta, numer modelu i szybkość wyszukanego PC.
b) Należy pobrać od użytkownika wymagania określające minimalnej konfiguracji PC, a więc szybkość, rozmiar RAM i twardego dysku oraz wymiar ekranu. Należy wyszukać wszystkie laptopy, które spełniają te wymagania. Należy wydrukować wszystkie atrybuty tych laptopów (czyli wartości wszystkich atrybutów z relacji laptop) oraz ich producentów.
!c) Należy zapytać użytkownika o producenta. Wydrukować specyfikacje wszystkich produktów' dostarczanych przez niego. To znaczy, należy wydrukować numer modelu, typ oraz wszystkie atrybuty charakteryzujące dany produkt w odpowiedniej relacji.
!!d) Należy dowiedzieć się od użytkownika o „budżecie” (koszt zestawu PC i drukarki) oraz minimalnej szybkości PC. Wyszukać najtańszy' zestaw, który spełnia zadane warunki i dobrać, o ile to możliwe, drukarkę kolorową. Wy drukować numery' modeli elementów zestawu, e) Należy zapytać użytkowmika o producenta, numer modelu, szybkość, rozmiary RAM i dysku twardego, szybkość CD-ROM oraz cenę nowego PC. Następnie trzeba sprawdzić, że w bazie nie ma PC o tym numerze modelu. Jeśli jest, to należy' wydrukować komentarz z ostrzeżeniem; jeśli nie, to należy pobrane dane wstawić odpowiednio do tabel Produkt i ?C.
*!f) Ceny wszystkich „starych” PC należy obniżyć o 100 $. Trzeba przy tym uzyskać pewność, że cena żadnego z „nowych” PC. izn. tych, które zostały wstawione do bazy danych w trakcie bieżącego przebiegu programu, nie zostały obniżone.
Ćwiczenie 7.1.2. Używając schematu bazy „okręty” z ćwiczenia 4.1.3:
Klasy (ktasa, typ, kraj, liczbaDział, działo, wyporność) Okręt (nazwa, klasa, wodowanie)
Bitwa (nazwa, data)
Rezultat (okręt, bitwa, wynik)
należy zapisać w formie osadzonego SQL przedstawione poniżej zadania:
a) Siła bojowa okrętu jest w przybliżeniu proporcjonalna do iloczynu lic; dział i sześcianu średnicy działa. Należy określić, która klasa okrętów d ponuje największą siłą bojową.
!b) Należy zapylać użytkownika o nazwę bitwy. Odnaleźć wszystkie kr< w których posiadaniu znajdują się okręty uczestniczące w tej bitwie, c) Należy dowiedzieć się od użytkownika nazwy klasy okrętu i innych dam niezbędnych do jednoznacznego wybrania krotki w tabeli Klasy. Pot trzeba pobrać listę nazw okrętów w tej klasie oraz daty wodowania ty okrętów. Użytkownik nie powinien podawać jednak nazwy pierwszego v dowanego statku, która pokrywa się z nazwą klasy.
!d) Należy sprawdzić czy w tabelach Bitwa, Rezultat i Okręt nie występ przypadkiem okręt, którego data wodowania jest późniejsza od daty uczę niczenia w bitwie. Jeśli pojawi się tego typu błąd. to należy wysłać do uź kownika stosowny komunikat o błędzie oraz dać mu sposobność zmh niewłaściwych danych. Następnie, jeśli użytkownik poda now^e warto; trzeba je zapisać w bazie danych.
*!Ćwiczcnic 7.1.3. Kolejne zadanie polega na wybraniu z relacji
PC (model, szybkość, ram, hd, cd, cena)
tych wszystkich PC, dla których można w tej relacji wyszukać co najmniej dw\a ir PC o takiej samej szybkości, ale które są od niego droższe. Istnieje wiele różny sposobów rozwiązania lego zadania, ale tu należy skorzystać z kursora przewijanej Krotki PC należy wczytywać uporządkowane w;edług szybkości, a następnie w;edł ceny. Wskazówka: Przy wczytywaniu kolejnych krotek należy sprawdzać, czy nas puje zmiana szybkości.
!!Ćwiczcnic 7.1.4. W punkcie 7.1.1 wspominaliśmy o tym, źc nie da się w języ SQL zapisać programu obliczającego silnię. To stwierdzenie dotyczy wersji SQI Jednakże w wrersji SQL3, dzięki istnieniu rekurencji - pisano o tym w podrozdzi 5.3, można uzyskać coś podobnego do silni. Należy- napisać w $QL3 rekurencyj zapytania, które dotyczy relacji M, zawierającej jedyną krotkę (w), gdzie m jest pe ną wartością całkowitą nicujemną. W wyniku ma powstać zbiór krotek (n, /?!), gd; 1 <n<m.