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

Z Studia Informatyczne
Wersja z dnia 10:33, 10 sie 2006 autorstwa PKrzyzagorski (dyskusja | edycje)
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacjiPrzejdź do wyszukiwania

Tablice o zmiennej długości – PL/SQL

Tablice o zmiennej długości – PL/SQL


Aby móc przechowywać kolekcje w tabelach, należy najpierw utworzyć typ danych reprezentujący kolekcję. Typy kolekcji tworzone są za pomocą polecenia CREATE TYPE. Początek polecenia jest podobny jak przy tworzeniu typu obiektowego: „CREATE [OR REPLACE] TYPE nazwa AS...”. W przypadku typów obiektowych po słowie kluczowym AS występowało słowo kluczowe OBJECT i lista atrybutów oraz deklaracji metod. W przypadku tablic o zmiennej długości pojawia się tutaj słowo kluczowe VARRAY, a za nim maksymalna liczba elementów jaka mogą być przechowywane w kolekcji, później słowo kluczowe OF i typ przechowywanych w kolekcji wartości. Sposób utworzenia przykładowego typu, reprezentującego tablicę o zmiennej długości, pokazuje przykład (1). Typ ten reprezentuje tablicę, która może maksymalnie przechowywać 4 wartości liczbowe. W tym przypadku są to wartości pomiarów temperatury w ciągu dnia. Instancje typu kolekcji, a więc konkretne kolekcje przechowujące wartości, są traktowane z poziomu PL/SQL jak obiekty. Na rzecz każdej kolekcji można aktywować kilka metod, których działanie zostało przedstawione w programie na przykładzie (2). Przykład (2) rozpoczyna się od deklaracji pomocniczej zmiennej typu kolekcji. Ponieważ zmienna nie jest inicjowana, to posiada pomyślną wartość równą NULL. Pierwsza linijka przykładowego programu tworzy nową kolekcję. Kolekcje są tworzone za pomocą wywołania czegoś, co przypomina konstruktor atrybutowy. Wywołanie to składa się z podania nazwy typu kolekcji, za którą w nawiasie podaje się listę kolejnych elementów, które mają się znaleźć w nowo utworzonej kolekcji. W przypadku tablic o zmiennej długości liczba podanych parametrów aktualnych nie może przekroczyć maksymalnego rozmiaru kolekcji. Tutaj tworzona jest nowa kolekcja przechowująca dwie liczby: 0 i –5. Ponieważ kolekcje są indeksowane od 1, to pod indeksem 1 w kolekcji znajdzie się liczba 0, a pod indeksem 2, liczba –5. Kolejny wiersz przykładowego programu wypisuje na konsoli wartości zwrócone przed dwie metody kolekcji: LIMIT i COUNT. Metoda LIMIT zwraca maksymalną liczbę elementów kolekcji (tutaj 4), a metoda COUNT aktualną liczbę elementów (tutaj 2). Jeżeli spojrzeć na wynik działania przykładowego programu (3) można zauważyć, że zwracane wartości są poprawne. Kolejny fragment programu to pętla przeglądająca całą kolekcję. W pętli tej zademonstrowano dwie rzeczy: metody FIRST i LAST, które zwracają pierwszy i ostatni poprawny indeks w kolekcji, oraz sposób odwołania się do pojedynczego elementu kolekcji za pomocą indeksu. Tutaj, indeks podaje się w nawiasach okrągłych w przeciwieństwie do takich języków jak np. C++ albo Java, gdzie indeks elementu w tablicy podaje się w nawiasach kwadratowych. Jak łatwo zatem zauważyć, zmienna kontrolna pętli przyjmuje kolejne wartości z przedziału poprawnych indeksów kolekcji, a w ciele pętli wyświetlane są na konsoli kolejne wartości z kolekcji. Jeżeli spojrzeć na wynik działania przykładowego programu można zauważyć, że wyświetlono liczby 0 i –5, które zostały umieszczone w kolekcji za pomocą konstruktora. Po wyżej omówionej pętli pokazano działanie metody EXTEND. Metoda ta dodaje na końcu kolekcji nowe elementy. Metoda ta przyjmuje 0, 1 lub 2 parametry. Jeżeli nie poda się żadnych parametrów, to na końcu kolekcji dodawany jest jeden element o wartości NULL. Jeżeli poda się jeden parametr, to określa on liczbę elementów, jaka ma być dodana na końcu kolekcji. Parametry te będą miały wartość NULL. Ostatecznie, jeżeli poda się dwa parametry, to pierwszy parametr określa liczbę dodawanych elementów, a drugi parametr określa indeks istniejącego elementu, którego wartość zostanie skopiowana do nowych elementów kolekcji. W przykładowym programie użyto tej ostatniej wersji metody. Po wykonaniu tej metody kolekcja zostanie rozszerzona o dwa elementy, które zostaną wypełnione wartością elementu o indeksie 2 (czyli –5). Po aktywacji metody EXTEND pojawia się znana już pętla wyświetlająca zawartość kolekcji. Jeżeli spojrzeć na rozwiązanie można zauważyć, że zawartość kolekcji jest zgodna z oczekiwaniami. ...


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