Zadanie 2.

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.

pl2

 

 

 

 

Rozwiązanie

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;

[collapse]