ZSBD-2st-1.2-lab8.tresc-1.3-Slajd34

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania

Konstrukcja CAST(MULTISET(...

Konstrukcja CAST(MULTISET(...


Operator TABLE omawiany poprzednio służy do zamiany kolekcji na tabelę, którą można następnie przetwarzać za pomocą poleceń DML. Istnieje również konstrukcja o działaniu odwrotnym. Jest to konstrukcja „CAST(MULTISET(...”. Pozwala ona na zamianę wyniku zapytania w kolekcję. Rozważmy przykład przedstawiony na slajdzie. Polecenie (1) tworzy typ NAZWISKA, który reprezentuje zagnieżdżoną tabelę przechowującą łańcuchy. Typ ten jest potrzebny w zapytaniu (2). Zapytanie (2) odczytuje wszystkie etaty zapisane w tabeli ETATY i zwraca NAZWY tych etatów, oraz wartość zwracaną przez wyrażenie:

CAST(MULTISET(

SELECT NAZWISKO FROM PRACOWNICY

WHERE ETAT=NAZWA) AS NAZWISKA)

Struktura tego wyrażenia jest następująca:

CAST(MULTISET( podzapytanie ) AS typ_kolekcji)

gdzie podzapytaniem jest:

SELECT NAZWISKO FROM PRACOWNICY WHERE ETAT=NAZWA,

a typem kolekcji jest typ NAZWISKA.

Podzapytanie zagnieżdżone w konstrukcji „CAST(MULTISET(...” to podzapytanie skorelowane, które zwraca zbiór nazwisk pracowników pracujących na etacie, który jest aktualnie analizowany przez zapytanie zewnętrzne. W wyniku działania konstrukcji „CAST(MULTISET(...”, wynik podzapytania jest konwertowany na kolekcję, której typ podano w wyrażeniu. Można zatem powiedzieć, że zapytanie (2) zwraca dla każdego etatu kolekcję nazwisk pracowników pracujących na tym etacie.

Konstrukcji „CAST(MULTISET(...„ można używać nie tylko w zapytaniach, ale również w innych miejscach. Jest to możliwe wszędzie tam, gdzie konieczne jest podanie wyrażenia, które zwraca całą kolekcję, np. w poleceniu INSERT, przy wstawianiu nowego obiektu zawierającego kolekcję do tabeli obiektowej.


<< Poprzedni slajd | Spis treści | Następny slajd >>