当前位置:   article > 正文

MySQL学习(5)—— 存储过程与存储函数_实验训练5:存储过程与函数的构建与使用

实验训练5:存储过程与函数的构建与使用

一. 存储过程

1.创建存储过程

CREATE PROCEDURE 存储过程名 [ ( IN | OUT | INOUT   参数名   参数类型) ]

BEGIN

              存储过程体;

END

IN:有参数无返回值,OUT:无参数有返回值,IN | OUT:有参数有返回值,INOUT:有参数有返回值。

  1. #创建存储过程,用来查看Student表中的平均年龄
  2. DELIMITER // #默认是以 ; 结束,由于BEGIN——END 中的SELECT语句需要;结束,因此没有办法执行到END,所以使用DELIMITER将结束符改为//
  3. CREATE PROCEDURE Avg_Age()
  4. BEGIN
  5. SELECT AVG(Sage)
  6. FROM Student;
  7. END //
  8. DELIMITER ;
  9. CALL Avg_Age(); #调用存储过程
  1. #创建存储过程,用来查看Student表中的最小年龄,并将最小年龄通过参数ma输出
  2. DELIMITER //
  3. CREATE PROCEDURE Min_Age(OUT ma INT)
  4. BEGIN
  5. SELECT MIN(Sage) INTO ma
  6. FROM Student;
  7. END //
  8. DELIMITER ;
  9. CALL Min_Age(@ma); #调用
  10. SELECT @ma; #查看变量的值
  1. #创建存储过程,用来查看Student表中某个学生的年龄,并用参数S_name来输入学生姓名
  2. DELIMITER //
  3. CREATE PROCEDURE Show_Age(IN S_name VARCHAR(45))
  4. BEGIN
  5. SELECT Sage
  6. FROM Student
  7. WHERE Sname = S_name;
  8. END //
  9. DELIMITER ;
  10. SET @S_name = '张三';
  11. CALL Show_Age(@S_name); #调用
  1. #创建存储过程,用来查看Student表中某个学生的年龄,并用参数S_name来输入学生姓名,用S_age输出年龄
  2. DELIMITER //
  3. CREATE PROCEDURE Show_Age(IN S_name VARCHAR(45), OUT S_age INT)
  4. BEGIN
  5. SELECT Sage INTO S_age
  6. FROM Student
  7. WHERE Sname = S_name;
  8. END //
  9. DELIMITER ;
  10. SET @S_name = '张三';
  11. CALL Show_Age(@S_name,@S_age); #调用
  12. SELECT @S_age;
  1. #创建存储过程,用来查看Student表中某个学生的专业,并用参数Sn来输入学生姓名,用Sn输出专业名
  2. DELIMITER //
  3. CREATE PROCEDURE Show_Sdept(INOUT Sn VARCHAR(45))
  4. BEGIN
  5. SELECT Sdept INTO Sn
  6. FROM Student
  7. WHERE Sname = Sn;
  8. END //
  9. DELIMITER ;
  10. SET @Sn = '张三';
  11. CALL Show_Sdept(@Sn); #调用
  12. SELECT @Sn;

2.查看存储过程

查看存储过程的创建信息:SHOW CREATE PROCEDURE 存储过程名;

查看存储过程的状态信息:SHOW PROCEDURE STATUS LIKE '存储过程名';

3.删除存储过程

DROP PROCEDURE 存储过程名;

 

二. 存储函数

1.创建存储函数

CREATE FUNCTION 函数名 (参数名   参数类型,....)

RETURNS 返回值类型

BEGIN

              函数体;

END

函数体中必须要有RETURN语句

  1. #创建存储过程,该函数查询“张三”的年龄并返回
  2. DELIMITER //
  3. CREATE FUNCTION Show_Age()
  4. RETURNS INT DETERMINISTIC #DETERMINISTIC(确定的)
  5. BEGIN
  6. RETURN(
  7. SELECT Sage
  8. FROM Student
  9. WHERE Sname = '张三');
  10. END //
  11. DELIMITER ;
  12. SELECT Show_Age(); #调用
  1. #创建存储函数,该函数查询某个学生的年龄并返回
  2. DELIMITER //
  3. CREATE FUNCTION Show_Age(Sn VARCHAR(45))
  4. RETURNS INT DETERMINISTIC
  5. BEGIN
  6. RETURN(
  7. SELECT Sage
  8. FROM Student
  9. WHERE Sname = Sn);
  10. END //
  11. DELIMITER ;
  12. SELECT Show_Age('张三');
  1. #创建存储函数,该函数查询某个学生所在的专业人数并返回
  2. DELIMITER //
  3. CREATE FUNCTION Show_num(Sn VARCHAR(45))
  4. RETURNS INT DETERMINISTIC
  5. BEGIN
  6. RETURN(
  7. SELECT COUNT(*)
  8. FROM Student
  9. WHERE Sdept = (SELECT Sdept
  10. FROM Student
  11. WHERE Sname = Sn));
  12. END //
  13. DELIMITER ;
  14. SET @Sn = '张三';
  15. SELECT Show_num(@Sn);

2.查看存储函数

查看存储函数的创建信息:SHOW CREATE FUCTION 函数名;

查看存储函数的状态信息:SHOW FUCTION STATUS LIKE '函数名';

3.删除存储函数

DROP FUCTION 函数名;

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

闽ICP备14008679号