存储过程
sh
# 准备工作:
# 1.导入atguigudb数据库
# 2.建立dbtest08数据库
CREATE DATABASE dbtest08 CHARACTER SET utf8;
# 3.切换当前数据库为dbtest08
USE dbtest08;
# 4.建立表
CREATE TABLE emps
AS
SELECT * FROM atguigudb.employees;
CREATE TABLE depts
AS
SELECT * FROM atguigudb.departments;
#------------------进行以下操--------------
# 1、创建存储过程select_all_data(),查看 emps 表的所有数据。
DELIMITER //
CREATE PROCEDURE select_all_data()
BEGIN
SELECT * FROM emps;
END //
DELIMITER ;
CALL select_all_data();
# 2、创建存储过程avg_employee_salary(),返回所有员工的平均工资。
DELIMITER //
CREATE PROCEDURE avg_employee_salary()
BEGIN
SELECT AVG(salary)
FROM emps;
END //
DELIMITER ;
CALL avg_employee_salary();
# 3、创建存储过程show_max_salary(),用来查看“emps”表的最高薪资值。
DELIMITER //
CREATE PROCEDURE show_max_salary()
BEGIN
SELECT MAX(salary) FROM emps;
END //
DELIMITER ;
CALL show_max_salary();
# 4、创建存储过程show_min_salary(),查看“emps”表的最低薪资值,并将最低薪资通过OUT参数“ms”输出。
DELIMITER //
CREATE PROCEDURE show_min_salary(OUT ms DOUBLE)
BEGIN
SELECT MIN(salary) INTO ms FROM emps;
END //
DELIMITER ;
CALL show_min_salary(@res);
SELECT @res;
# 5、创建存储过程show_someone_salary(),查看“emps”表的某个员工的薪资,并用IN参数empname输入员工姓名。
DELIMITER //
CREATE PROCEDURE show_someone_salary(IN empname VARCHAR(25))
BEGIN
SELECT salary
FROM emps
WHERE last_name = empname;
END //
DELIMITER ;
CALL show_someone_salary('Lee');
# 6、创建存储过程show_someone_salary2(),查看“emps”表的某个员工的薪资,并用IN参数empname输入员工姓名,用OUT参数empsalary输出员工薪资。
DELIMITER //
CREATE PROCEDURE show_someone_salary2(IN empname VARCHAR(25), OUT empsalary DOUBLE)
BEGIN
SELECT salary INTO empsalary
FROM emps
WHERE last_name = empname;
END //
DELIMITER ;
CALL show_someone_salary2('Abel', @emp_sal);
SELECT @emp_sal;
# 7、创建存储过程show_mgr_name(),查询某个员工领导的姓名,并用INOUT参数“empname”输入员工姓名,输出领导的姓名。
DELIMITER //
CREATE PROCEDURE show_mgr_name(INOUT empname VARCHAR(25))
BEGIN
#创建一个局部变量mgrno
DECLARE mgrno INT;
#通过empname查询得到管理者编号,送入mgrno
SELECT manager_id INTO mgrno
FROM emps
WHERE last_name = empname;
#通过mgrno查询得到管理者的姓名,送入empname
SELECT last_name INTO empname
FROM emps
WHERE employee_id = mgrno;
END //
DELIMITER ;
SET @emp_name = 'Abel';
CALL show_mgr_name(@emp_name);
SELECT @emp_name;
# 8、查看所有的存储过程
SHOW PROCEDURE STATUS;
# 9、查看存储过程show_mgr_name的创建语句
SHOW CREATE PROCEDURE show_mgr_name;
# 10、删除所有的存储过程
DROP PROCEDURE show_mgr_name;
DROP PROCEDURE show_someone_salary2;