Przykładowe zadania na kolokwium (PL/SQL)staff.uz.zgora.pl/garkit/bd2/kolo-plsql.pdf ·...
Transcript of Przykładowe zadania na kolokwium (PL/SQL)staff.uz.zgora.pl/garkit/bd2/kolo-plsql.pdf ·...
Przykładowe zadania na kolokwium (PL/SQL) wszystkie zadania oparte o schemat przekopiowany z bazy Firebird (employee):
1. Funkcje operujące na danych: napisać funkcję, która zwraca (przykładowo): a) średnią zarobków w podanym dziale, b) listę nazwisk (posortowaną alfabetycznie) pracowników z danego działu, c) listę działów, które podlegają bezpośrednio pod dany dział, posortowaną wg budżetów. d) Zadania należy wykonać „na piechotę” nie korzystając z wbudowanych funkcji
agregujących – wykorzystanie kursorów, w tym kursorów z parametrem (where) 2. Procedury operujące na danych – procedury wykonujące operacje na danych
a) SELECT (INTO) b) INSERT, UPDATE, DELETE, c) INSERT … SELECT …. d) także z wykorzystaniem dodatkowych operacji poza procedurami (np. utworzenie tabeli) e) np.
• utworzyć nową tabelę E2 jako kopie (bez danych) tablicy EMPLOYEE (CREATETABLE E2 AS SELECT * FROM EMPLOYEE WHERE 0=1), dodać do niejkolumnę HIRE_DATE_STR (tekstowa) a następnie napisać (utworzyć) procedurę,która skopiuje (za pomocą kursora) dane z tablicy EMPLOYEE a następnie (też zapomocą kursora) w kolumnie HIRE_DATE_STR wpisze tekstową reprezentacjędaty (TO_CHAR) z kolumny HIRE_DATE (w dowolnym, wybranym formacie).
• utworzyć nową tabelę E2 jako kopie (z danymi) tablicy EMPLOYEE (CREATETABLE E2 AS SELECT * FROM EMPLOYEE) a następnie utworzyć procedurę,która z tabeli E2 usunie pracowników, którzy zarabiają co najmniej 100 000, a dlapozostałych pracowników (za pomocą kursora) przeliczy ich zarobki na złotówki (poaktualnym kursie dolara na dzień wykonywania testu)
3. Wyzwalacze (przy testowaniu należy wykonywać jeden wyzwalacz – pozostałe usuwamy): a) utworzyć wyzwalacz, który przy dodawaniu lub aktualizacji pracownika zaokrągli
wartość zarobków w górę do wielokrotności 100. b) napisać wyzwalacz, który przy każdej aktualizacji lub dodawaniu pracownika w polu
FULL_NAME wstawi prawidłową wartość (LAST_NAME, FIRST_NAME) c) napisać wyzwalacz, który przy wstawianiu lub aktualizacji pracownika, jeżeli będziemy
próbowali dodać JOB_COUNTRY = PL, to wyrzuci błąd (czyli nie pozowoli namwstawić rekordu z JOB_COUNTRY = PL)