当前位置:   article > 正文

mysql存储过程与函数_设计一个存储过程实现以下功能:计算并返回某部门员工工资的总和

设计一个存储过程实现以下功能:计算并返回某部门员工工资的总和

mysql存储过程与函数

存储过程的创建与调用

准备工作:

CREATE DATABASE dbtest15;
USE dbtest15;
CREATE TABLE employees
AS SELECT * FROM atguigudb.`employees`
CREATE TABLE departments
AS 
SELECT * FROM atguigudb.`departments`;
SELECT * FROM employees;
SELECT * FROM departments;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

类型一:无参数并且无返回值

创建存储过程:
在这里插入图片描述
存储过程的调用:
CALL select_all_data()
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

类型二:带OUT

创建存储过程:
在这里插入图片描述
调用:
CALL show_min_salary(@ms);
查看变量值:
SELECT @ms
在这里插入图片描述

类型三:带IN

在这里插入图片描述
调用方式一:
CALL show_someone_salary('Abel');
调用方式二:
SET @empname = 'Abel';
CALL show_someone_salary(@empname);
在这里插入图片描述

类型四:带IN和OUT

创建存储过程:
在这里插入图片描述
调用:
SET @empname = 'Abel'
CALL show_someone_salary2(@empname,@empsalary);
SELECT @empsalary
在这里插入图片描述

类型五:带INOUT

创建存储过程:
在这里插入图片描述
在这里插入图片描述
SET @empname = 'Abel';
CALL show_mgr_name(@empname);
SELECT @empname;
在这里插入图片描述

存储函数的创建与调用

若在创建存储函数中报错you might want to use the less safe log_bin_trust_function_creatorsvariable有两种处理方法:

  • 方式一:加上必要的函数特性
    在这里插入图片描述

  • 方式二:
    在这里插入图片描述
    调用:
    SELECT email_by_name();
    在这里插入图片描述
    在这里插入图片描述
    SELECT email_by_id(101)
    在这里插入图片描述
    在这里插入图片描述
    SET @dept_id = 30;
    SELECT count_by_id(@dept_id)
    在这里插入图片描述

对比存储函数和存储过程

在这里插入图片描述
存储函数可以放在查询语句中使用,存储过程不行。
存储过程的功能更加强大,包括能够执行对表的操作(比如创建表,删除表等)和事务操作,这些功能是存储函数不具备的。

存储过程和函数的查看修改和删除

查看

使用SHOW CREATE语句查看存储过程和函数的创建信息

SHOW CREATE PROCEDURE show_mgr_name;
在这里插入图片描述
在这里插入图片描述

使用SHOW STATUS语句查看存储过程和函数的状态信息

SHOW PROCUDURE STATUS
在这里插入图片描述
SHOW PROCUDURE STATUS LIKE 'show_max_salary';
在这里插入图片描述
SHOW FUNCTION STATUS LIKE 'show_max_salary';
在这里插入图片描述

information_schema.Routines表中查看存储过程和函数的信息

SELECT * FROM information_schema.Routines WHERE ROUTINE_NAME='email_by_id AND ROUTINE_TYPE = 'FUNCTION';
在这里插入图片描述

修改

在这里插入图片描述

删除

在这里插入图片描述

关于存储过程使用的争议

优点:
在这里插入图片描述
缺点:
在这里插入图片描述
在这里插入图片描述

课后练习

1.创建存储过程insert user() ,实现传入用户名和密码,插入到admin表中

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.创建存储过程get_phone(),实现传入女神编号,返回女神姓名和女神电话
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.创建存储过程date_ diff(), 实现传入两个女神生日,返回日期间隔大小
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
4.创建存储过程format_ date(), 实现传入-一个日期,格式化成xx年xx月xx日并返回
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
5.创建存储过程beauty
limit(), 根据传入的起始索引和条目数,查询女神表的记录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
6.创建带inout模式参数的存储过程,传入a和b两个值,最终a和b都翻倍并返回。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7.删除题目5的存储过程
在这里插入图片描述
8.查看题目6中存储过程的信息
在这里插入图片描述
1.创建函数get_ count(), 返回公司的员工个数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2.创建函数ename_ salary(), 根据员工姓名,返回它的工资
在这里插入图片描述
3.创建函数dept_ sal() , 根据部门名,返回该部门的平均工资
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建函数add_ float(), 实现传入两个float,返回二者之和

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/700801
推荐阅读
相关标签
  

闽ICP备14008679号