Professional Documents
Culture Documents
USE `soft_uni`;
DELIMITER $$
CREATE PROCEDURE usp_get_employees_salary_above_35000()
BEGIN
SELECT e.first_name, e.last_name
FROM `employees` AS e
WHERE e.salary > 35000
ORDER BY e.first_name, e.last_name, e.employee_id;
END $$
DELIMITER ;
CALL usp_get_employees_salary_above_35000();
DELIMITER $$
CREATE PROCEDURE usp_get_employees_salary_above(salary_limit DOUBLE(19,4))
BEGIN
SELECT e.first_name, e.last_name
FROM `employees` AS e
WHERE e.salary >= salary_limit
ORDER BY e.first_name, e.last_name, e.employee_id;
END $$
DELIMITER ;
CALL usp_get_employees_salary_above(48100);
DELIMITER $$
CREATE PROCEDURE usp_get_towns_starting_with(name_start TEXT)
BEGIN
SELECT t.name AS 'town_name'
FROM `towns` AS t
WHERE t.name LIKE concat(name_start,'%')
ORDER BY t.name;
END $$
DELIMITER ;
CALL usp_get_towns_starting_with('b');
CALL usp_get_towns_starting_with('be');
CALL usp_get_towns_starting_with('berlin');
DELIMITER $$
CREATE PROCEDURE usp_get_employees_from_town(town_name TEXT)
BEGIN
SELECT e.first_name, e.last_name
FROM `employees` AS e
JOIN `addresses` AS a ON e.address_id = a.address_id
JOIN `towns` AS t ON a.town_id = t.town_id
WHERE t.name = town_name
ORDER BY e.first_name, e.last_name, e.employee_id;
END $$
DELIMITER ;
CALL usp_get_employees_from_town('Sofia');
SELECT ufn_get_salary_level(13500);
SELECT ufn_get_salary_level(43300);
SELECT ufn_get_salary_level(125500);
DELIMITER $$
CREATE PROCEDURE usp_get_employees_by_salary_level(salary_level VARCHAR(7))
BEGIN
SELECT e.first_name, e.last_name
FROM `employees` AS e
WHERE e.salary < 30000 AND salary_level = 'low'
OR e.salary >= 30000 AND e.salary <= 50000 AND salary_level = 'average'
OR e.salary > 50000 AND salary_level = 'high'
ORDER BY e.first_name DESC, e.last_name DESC;
END $$
DELIMITER ;
CALL usp_get_employees_by_salary_level('low');
CALL usp_get_employees_by_salary_level('average');
CALL usp_get_employees_by_salary_level('high');