-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask14.sql
More file actions
98 lines (81 loc) · 1.99 KB
/
Copy pathtask14.sql
File metadata and controls
98 lines (81 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
CREATE DATABASE task14;
USE task14;
CREATE TABLE employees (
emp_id INT AUTO_INCREMENT PRIMARY KEY,
emp_name VARCHAR(100),
department VARCHAR(50),
salary DECIMAL(10,2),
bonus DECIMAL(10,2)
);
--Stored Procedure: Insert Employee Data
--Procedure with Parameters
DELIMITER $$
CREATE PROCEDURE add_employee (
IN p_name VARCHAR(100),
IN p_dept VARCHAR(50),
IN p_salary DECIMAL(10,2),
IN p_bonus DECIMAL(10,2)
)
BEGIN
INSERT INTO employees(emp_name, department, salary, bonus)
VALUES(p_name, p_dept, p_salary, p_bonus);
END $$
DELIMITER ;
--Call Procedure
CALL add_employee('Vijay', 'IT', 50000, 5000);
CALL add_employee('Anita', 'HR', 45000, 3000);
SELECT * FROM employees;
--Stored Procedure with OUTPUT Parameter
--Get Employee Count
DELIMITER $$
CREATE PROCEDURE get_employee_count(OUT total INT)
BEGIN
SELECT COUNT(*) INTO total FROM employees;
END $$
DELIMITER ;
Call
CALL get_employee_count(@count);
SELECT @count;
--User Defined Function (UDF): Tax Calculation
✔ Function must return a value
Example: 10% tax on salary
DELIMITER $$
CREATE FUNCTION calculate_tax(sal DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN sal * 0.10;
END $$
DELIMITER ;
Use Function
SELECT emp_name, salary, calculate_tax(salary) AS tax
FROM employees;
--Function: Bonus + Salary Total
DELIMITER $$
CREATE FUNCTION total_income(sal DECIMAL(10,2), bon DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
BEGIN
RETURN sal + bon;
END $$
DELIMITER ;
Usage:
SELECT emp_name, total_income(salary, bonus)
FROM employees;
--Procedure with Error Handling
DELIMITER $$
CREATE PROCEDURE safe_insert_employee(
IN p_name VARCHAR(100),
IN p_dept VARCHAR(50),
IN p_salary DECIMAL(10,2)
)
BEGIN
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
BEGIN
SELECT 'Error occurred during insert' AS message;
END;
INSERT INTO employees(emp_name, department, salary)
VALUES(p_name, p_dept, p_salary);
SELECT 'Insert successful' AS message;
END $$
DELIMITER ;