ZSBD-2st-1.2-lab9.tresc-1.3-Slajd19
Operator TREAT – SQL
W języku SQL można również wykorzystać operator TREAT do uzyskania dostępu do atrybutów charakterystycznych dla podtypów. Zapytanie wykorzystujące operator TREAT przedstawiono na przykładzie (1). W zapytaniu tym, wyświetlany jest KOLOR figur odczytywanych z tabeli FIGURY, oraz wartości atrybutów DLUGOSC_BOKU i PROMIEN specyficznych dla typów KWADRAT i KOLO. Użycie operatora TREAT jest tutaj analogiczne do jego użycia w programie w PL/SQL, przy czym zamiast zmiennej podano tutaj wywołanie operatora VALUE, który zwraca obiekt odczytany z tabeli. Typem wyrażenia VALUE(X) jest typ FIGURA, gdyż reprezentuje on obiekty odczytywane z tabeli obiektowej FIGURY. Za pomocą operatora TREAT typ ten jest zmieniany na typ podany w zapytaniu (KWADRAT albo KOLO). Po zmianie typu możliwe jest odczytanie wartości specyficznych dla typów KWADRAT i KOLO. Operator TREAT w języku SQL jednak nie zgłasza błędu, jeżeli zmiana typu nie jest możliwa, ale zwraca wartość NULL. Odwołanie się do atrybutu za pomocą operatora kropkowego, poprzez zmienną o wartości NULL również zwraca NULL. Dzięki temu, próba odczytania wartości atrybutu, który w obiekcie danego podtypu nie istnieje, kończy się odczytaniem wartości NULL. Jeżeli spojrzeć na wynik zapytania (1) można łatwo zauważyć, że dla niebieskiej figury (czyli koła) odczytano długość promienia, a długość boku jest równa NULL, a dla figury zielonej (czyli kwadratu) odczytano długość boku, a promień ma wartość NULL.