ZSBD-2st-1.2-lab10.tresc-1.4-Slajd6
Zadanie (1) – cd.
Zapis kolejnych części odczytanego pliku do BLOBa jest wykonywany w pętli (4). W pierwszym kroku łańcuch reprezentujący paczkę jest konwertowany do surowych danych za pomocą procedury CAST_TO_RAW pakietu UTL_RAW, a następnie zapisywany do BLOBa. Kroki te są powtarzane tak długo, aż wszystkie paczki zostaną zapisane. Tak zbudowany BLOB jest następnie zamykany (5). Celem zadania jest uzupełnienie kroku (6), w którym powinien zostać utworzony obiekt typu SI_STILLIMAGE reprezentujący plik graficzny zapamiętany w zmiennej PICT typu BLOB. Obiekt ten powinien zostać zapisany do zmiennej TEMPFLAG. Następnie, za pomocą metody SI_INITFEATURES typu SI_STILLIMAGE, powinny zostać zainicjowane pomocnicze atrybuty obiektu reprezentującego obraz w celu przyspieszenia realizacji zapytań (patrz poniżej). Ostatecznie obiekt zapisany w zmiennej TEMPFLAG powinien zostać zapisany do tabeli FLAGS. Typ SI_STILLIMAGE, oraz jego konstruktor i metody, zostały opisane na wykładzie poświęconym standardowi SQL/MM. Ostatni krok programu polega na zwolnieniu zasobów zajmowanych przez tymczasowy BLOB za pomocą procedury FREETEMPORARY pakietu DBMS_LOB (7).
Typ obiektowy SI_STILLIMAGE (w jego implementacji w Oracle 10g) posiada bezparametrową metodę SI_INITFEATURES obliczającą własności składowanego obrazu, które mogą być wykorzystane do przyspieszenia realizacji zapytań. Własności obrazu są zapisywane w atrybutach obiektu reprezentującego konkretny obraz i są razem z nim składowane w tabeli. Przykładowa aktywacja metody SI_INITFEATURES wygląda następująco:
declare
obraz si_stillimage;
.......
begin
.......
obraz.si_initfeatures()
.......
{instrukcje zapisujace obraz do tabeli}
.......
end;
/
Kod, który przedstawiono na tym i poprzednim slajdzie załączono do kursu w pliku load_flags.sql.
Uwaga ! W przypadku, gdy z jakichś powodów nie można wykonać zadania (1), można je ominąć importując do Oracle 10g gotową tabelę z flagami. Aby to wykonać, należy: 1. Pobrać plik flags.dmp załączony do kursu. 2. Przejść w linii poleceń do katalogu z plikiem flags.dmp i wykonać polecenie:
imp user/pass@nazwa_bd file=flags.dmp tables(flags)
Do wykonania tych kroków konieczne jest posiadanie zainstalowanego i skonfigurowanego oprogramowania klienckiego Oracle 10g (a w szczególności narzędzia imp).