Procedury w języku SQL na przykładzie DBMS MySQL. Ćwiczenia praktyczne

W języku SQL możemy tworzyć procedury i funkcje.

Procedura jest podprogramem utworzonym w SQL, która zawiera kod SQL oraz kod sterujący jej wykonaniem.

Procedury są przydatne wtedy, gdy chcemy wykonać jakieś często powtarzające się operacje.

Postać ogólna procedury

CREATE PROCEDURE nazwa_procedury (IN zmienna typ, OUT zmienna typ)
BEGIN
    -- polecenia i kod SQL
END

Przykład użycia

DELIMITER //

CREATE PROCEDURE przecena (IN nazwa_towaru VARCHAR(64))
BEGIN
    UPDATE product
    SET suggested_price = suggested_price * 0.9
    WHERE name = nazwa_towaru;
END //

DELIMITER ;

call przecena('Bunny Boot');

1. Zaprojektować procedurę wynagrodzenia, która dla podanego tytułu zawodowego obliczy, ile pracowników pracuje w danym zawodzie, jakie jest minimalne, maksymalne i średnie wynagrodzenie w tej grupie zawodowej.

2. Sprawdzić działanie procedury dla dwóch różnych grup zawodowych.

2-1+2

DELIMITER //
CREATE PROCEDURE wynagrodzenia (IN grupaZawodowa VARCHAR(25))
BEGIN
	SELECT COUNT(*) as pracownicy, MIN(salary) as minimalne, MAX(salary) as maksymalne, AVG(salary) as srednie
	FROM emp
	WHERE title = grupaZawodowa;
END //
DELIMITER ;

 

3. Zaprojektować procedurę, która dla podanej nazwy departamentu wyświetli tytuł zawodowy, ilość pracowników, minimalne, maksymalne i średnie wynagrodzenie grup zawodowych pracujących w tym departamencie.

4. Sprawdzić działanie procedury dla dwóch różnych regionów.

2-3+4

DELIMITER //
CREATE PROCEDURE pracownik_region (IN nazwaRegionu VARCHAR(50))
BEGIN
	SELECT R.name AS region, D.name AS departament, E.title AS tytulZawodowy, COUNT(*) AS pracownicy, MIN(E.salary) as minimalne, MAX(E.salary) as maksymalne, AVG(E.salary) as srednie
	FROM emp E INNER JOIN dept D ON E.dept_id=D.id INNER JOIN region R ON R.id=D.region_id
	WHERE R.name = nazwaRegionu
	GROUP BY E.title
	ORDER BY region, departament;
END //
DELIMITER ;

 

3 myśli nt. „Procedury w języku SQL na przykładzie DBMS MySQL. Ćwiczenia praktyczne

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.