Korzystając z tabel Pracownicy oraz Działy (stworzone w Zadaniu 1 poziomu Zaawansowanego) napisz kursor, który pobierze z tabel imię, nazwisko oraz płacę podstawową każdego pracownika, a następnie wyświetli je w formie: Ania Kowalska zarabia 2000.
- a) zmodyfikuj kod tak, by pracownicy byli wyświetlani w kolejności alfabetycznej wg nazwiska.
Schemat: HR, Tabele: Pracownicy, Działy, Kolumny: imie, nazwisko, placa_podstawowa.
[spoiler title=’Rozwiązanie’ style=’default’ collapse_link=’true’]
set serveroutput on;
— deklaracja zmiennych
declare
cv_imie pracownicy.imie%TYPE;
cv_nazwisko pracownicy.nazwisko%type;
cv_placa DZIALY.PLACA_PODSTAWOWA%type;
— deklaracja kursora
cursor crs_prac is
select p.imie, p.nazwisko, d.PLACA_PODSTAWOWA
from pracownicy p inner join dzialy d
on p.id_dzialu = d.id_dzialu;
— otwarcie kursora
begin
open crs_prac;
— pobieranie wierszy z kursora
loop
fetch crs_prac
into cv_imie, cv_nazwisko, cv_placa;
exit when crs_prac%notfound;
DBMS_OUTPUT.PUT_LINE(cv_imie ||’ ’ || cv_nazwisko || ’ zarabia ’ || cv_placa);
end loop;
— zamkniecie kursora
close crs_prac;
end;
/
- a) deklarację kursora należy zmienić dopisując klauzulę order by:
— deklaracja kursora
cursor crs_prac is
select p.imie, p.nazwisko, d.PLACA_PODSTAWOWA
from pracownicy p inner join dzialy d
on p.id_dzialu = d.id_dzialu
order by p.nazwisko;
[/spoiler]