已知工资计算公式为:工资=基本工资+职级工资+职级绩效
根据tbl_employees、tbl_departments和tbl_rank_salary使用游标创建存储过程:employeesalary()
该存储过程目的是生成职工工资表emsalary,包括职工编号(employee_id)、部门名称(department)、职工姓名(name)、职级名称(rank_title )、工资(allsalary)5个字段。
create table语句?这个也要我帮你写嘛
这个你参考下,对不对我就管不了了
CREATE PROCEDURE employeesalary()
BEGIN
DECLARE emp_id INT;
DECLARE dept_name VARCHAR(255);
DECLARE emp_name VARCHAR(255);
DECLARE rank_title VARCHAR(255);
DECLARE basic_salary FLOAT;
DECLARE rank_salary FLOAT;
DECLARE rank_performance FLOAT;
DECLARE all_salary FLOAT;
DECLARE done INT DEFAULT FALSE;
DECLARE emp_cursor CURSOR FOR
SELECT tbl_employees.employee_id, tbl_departments.department, tbl_employees.name, tbl_rank_salary.rank_title, tbl_employees.basic_salary, tbl_rank_salary.rank_salary, tbl_rank_salary.rank_performance
FROM tbl_employees
INNER JOIN tbl_departments
ON tbl_employees.department_id = tbl_departments.department_id
INNER JOIN tbl_rank_salary
ON tbl_employees.rank_level = tbl_rank_salary.rank_level;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
DROP TABLE IF EXISTS emsalary;
CREATE TABLE emsalary (
employee_id INT,
department VARCHAR(255),
name VARCHAR(255),
rank_title VARCHAR(255),
allsalary FLOAT
);
OPEN emp_cursor;
read_loop: LOOP
FETCH emp_cursor INTO emp_id, dept_name, emp_name, rank_title, basic_salary, rank_salary, rank_performance;
IF done THEN
LEAVE read_loop;
END IF;
SET all_salary = basic_salary + rank_salary + rank_performance;
INSERT INTO emsalary (employee_id, department, name, rank_title, allsalary)
VALUES (emp_id, dept_name, emp_name, rank_title, all_salary);
END LOOP;
CLOSE emp_cursor;
END;