diff --git a/functionsProcedures.sql b/functionsProcedures.sql index 35f400e..b087e7b 100644 --- a/functionsProcedures.sql +++ b/functionsProcedures.sql @@ -1,73 +1,59 @@ -SELECT * from employees; -SELECT count(*) from employees; - - -CREATE or replace Function emp_count() -RETURNS void -LANGUAGE SQL -as -$$ - DELETE FROM employees WHERE employee_id = 30; -$$; - - - -CREATE or replace Function delete_emp() -RETURNS void -LANGUAGE SQL -as -$$ - DELETE FROM employees WHERE employee_id = 30; -$$; - -SELECT delete_emp(); - - -CREATE or replace Function delete_emp_by_id(p_emp_id int) -RETURNS void +-- =============================== +-- View employees +-- =============================== +SELECT * FROM employees; +SELECT COUNT(*) FROM employees; + +-- =============================== +-- Function: Delete a specific employee by ID (SQL language) +-- =============================== +CREATE OR REPLACE FUNCTION delete_employee_by_id(p_emp_id INT) +RETURNS VOID LANGUAGE SQL -as -$$ +AS $$ DELETE FROM employees WHERE employee_id = p_emp_id; $$; -SELECT delete_emp_by_id(29) +-- Example call +SELECT delete_employee_by_id(30); -CREATE Procedure remove_emp_var() +-- =============================== +-- Procedure: Delete a specific employee using variable (PLpgSQL) +-- =============================== +CREATE OR REPLACE PROCEDURE remove_employee_by_id(p_emp_id INT) LANGUAGE plpgsql -AS -$$ - DECLARE - test_var int; - BEGIN - SELECT employee_id INTO test_var from employees WHERE employee_id = 26; - DELETE FROM employees WHERE employee_id = test_var; - END +AS $$ +DECLARE + emp_to_delete INT; +BEGIN + -- Store the employee ID to delete into variable + SELECT employee_id INTO emp_to_delete FROM employees WHERE employee_id = p_emp_id; + + -- Delete employee + DELETE FROM employees WHERE employee_id = emp_to_delete; + + -- Feedback + RAISE NOTICE 'Employee % removed successfully!', emp_to_delete; +END $$; -call remove_emp_var(); +-- Example call +CALL remove_employee_by_id(25); -CREATE Procedure remove_emp_by_id(p_emp_id int) +-- =============================== +-- Procedure: Delete employee using local variable without parameters +-- =============================== +CREATE OR REPLACE PROCEDURE remove_emp_var() LANGUAGE plpgsql -AS -$$ - DECLARE - test_var int; - BEGIN - SELECT employee_id INTO test_var from employees WHERE employee_id = p_emp_id; - DELETE FROM employees WHERE employee_id = test_var; - - RAISE NOTICE 'Employee removed successfully!'; - END +AS $$ +DECLARE + emp_to_delete INT; +BEGIN + SELECT employee_id INTO emp_to_delete FROM employees WHERE employee_id = 26; + DELETE FROM employees WHERE employee_id = emp_to_delete; + RAISE NOTICE 'Employee % removed successfully!', emp_to_delete; +END $$; - -CALL remove_emp_by_id(25) - - - - - - - - +-- Example call +CALL remove_emp_var();