首页 > 其他分享 >存储过程和存储函数

存储过程和存储函数

时间:2023-11-04 22:00:46浏览次数:31  
标签:存储 函数 学号 grade stu DELIMITER 过程 name

这个作业属于哪个课程 https://edu.cnblogs.com/campus/uzz/cs3
这个作业要求在哪里 https://edu.cnblogs.com/campus/uzz/cs3/homework/13061
这个作业的目标 <第7次作业-存储过程和存储函数>

1.输入以下代码,创建存储过程stu_info,执行时通过输入姓名,可以查询该姓名的学生的各科成绩。

DELIMITER @@
CREATE PROCEDURE stu_info(IN name CHAR(8))
BEGIN
SELECT s.学号,姓名,课程编号,分数 FROM student_info s,grade g
WHERE s.学号=g.学号 and 姓名=name;
END @@
DELIMITER ;
CALL stu_info('张青平');

2.使用studentsdb数据库中的student_info表、curriculum表、grade表。

(1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。

DELIMITER @@
CREATE PROCEDURE stu_grade(IN name CHAR(4))
BEGIN
SELECT s.姓名,c.课程名称,g.分数 FROM grade g
INNER JOIN  student_info s ON g.学号=s.学号
INNER JOIN curriculum c ON g.课程编号=c.课程编号
WHERE s.学号=xuehao;
END @@
DELIMITER ;

(2)调用存储过程stu_grade。

CALL stu_grade('0001');

3.使用studentsdb数据库中的student_info表、curriculum表、grade表.

(1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。

DELIMITER @@
CREATE PROCEDURE stu_name(IN name CHAR(8))
BEGIN
SELECT MAX(分数) 最高分,MIN(分数) 最低分,AVG(分数) 平均分 FROM grade g
INNER JOIN  student_info s ON g.学号=s.学号
INNER JOIN curriculum c ON g.课程编号=c.课程编号
WHERE 姓名=name GROUP BY 姓名;
END @@
DELIMITER ;

(2)调用存储过程stu_name。

CALL stu_name('张青平');

(3)删除存储过程stu_name。

DROP PROCEDURE stu_name;

4.使用studentsdb数据库中的grade表。

(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。

DELIMITER @@
CREATE PROCEDURE stu_g_r(IN xuehao CHAR(4))
BEGIN
SELECT COUNT(课程编号) AS 选修课程数量 FROM grade
WHERE 学号=xuehao ORDER BY 学号;
END @@
DELIMITER ;

(2)执行存储过程stu_g_r,输入学号0002。

CALL stu_g_r('0002');

(3)显示0002号学生的选课门数。

DELIMITER ;
CALL stu_g_r('0002');

5.使用studentsdb数据库中的curriculum表、grade表。

(1)创建一个存储函数num_func,统计指定课程名称的选课人数。

SET GLOBAL log_bin_trust_function_creators=1;
DELIMITER @@
CREATE FUNCTION num_func(cname varchar(20))
RETURNS INT
BEGIN
DECLARE num INT;
SELECT COUNT(*) INTO num from grade g,curriculum c where g.课程编号=c.课程编号 AND c.课程名称=cname;
RETURN num;
END @@

(2)执行存储函数num_func,查看“C语言程序设计”选课人数。

CALL num_func('C语言程序设计');

6.使用studentsdb数据库中的curriculum表、grade表。

(1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。

DELIMITER @@
CREATE FUNCTION avg_func(cname VARCHAR(50))
RETURNS DECIMAL
   BEGIN
    DECLARE v_acg DECIMAL;
		DECLARE avg_cur CURSOR FOR SELECT avg(分数) FROM grade g, curriculum c
			WHERE g.课程编号 = c.课程编号 AND 课程名称 = cname;
		OPEN avg_cur;
		FETCH avg_cur INTO v_acg;
		CLOSE avg_cur;
		RETURN v_acg;
	 END @@

(2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。

DELIMITER ;
SELECT avg_func('c语言程序设计');

(3)删除存储函数avg_func。

DROP FUNCTION avg_func;


实验思考

1.存储函数和存储过程如何将运算结果返回给外界?

存储函数通过return语句返回函数值

存储过程通过out/inout 参数将结果返回

2.存储函数有OUT参数、INOUT参数吗?

3.使用游标的步骤。

(1)声明游标

(2)打开游标

(3)提取数据

(4)关闭游标

标签:存储,函数,学号,grade,stu,DELIMITER,过程,name
From: https://www.cnblogs.com/liu183274/p/17809863.html

相关文章

  • JavaScript复习——03 函数
    函数在JS中也是一个对象,它具有其它对象的所有功能,函数中可以存储代码,且可以在需要的时候调用这些代码函数的操作函数的定义函数声明function函数名([参数列表]){ //函数体 return返回值;}函数表达式const函数名=function([参数列表]){ return返回值;}......
  • 反三角函数
    反三角函数反三角函数其实就是反函数例如:y=2x+1的反函数是x=y-1/2y=sinx的返三角函数就是y=arcsinx其图像就是:这是原来的sinx的定义域就变成了arcsinx的值域,值域变成了arcsinx的定义域arcsinx是增函数arccosx的函数图像:arctanx的图像:......
  • Python中的函数未定义的错误
    通过这个解释,我们将了解当Python程序显示类似NameError:name''isnotdefined的错误时,即使该函数存在于脚本中,也会出现这种情况。我们还学习了当我们使用拼写错误的变量或没有导入的内置函数时会发生什么,以及如何在Python中避免这些错误。避免在Python声明之前调用函数在Python......
  • 对象内存图的过程
     单一对象1.由于TestStudent中含有main方法,因此TestStudent类先以字节码形式进入方法区,里面包含main方法2.虚拟机调用该类中的main方法,main方法进入栈内存中3.main方法中先创建对象stu,调用了student类,Student类字节码文件进入方法区4.创建了对象stu,在堆内存中开辟对象stu......
  • 5. 函数
    1.函数函数是一个可重用的代码块,用来完成某个特定功能。每当需要反复执行一段代码时,可以利用函数来避免重复书写相同代码。函数包含着的代码只能在函数被调用时才会执行,就可以避免页面载入时执行该脚本在JavaScript中,可以使用以下三种方法来定义一个函数使用function......
  • JS 工具函数
    1、校验数据类型exportconsttypeOf=function(obj){returnObject.prototype.toString.call(obj).slice(8,-1).toLowerCase()}示例:typeOf('树哥')//stringtypeOf([])//arraytypeOf(newDate())//datetypeOf(null)//nulltypeOf(true)//boolea......
  • 封装函数
    //编写程序,获取数组中的最大值//functionarr(arr){//varmax=[];//for(vari=0;i<arr.length;i++){//if(arr[i]>max){//max=arr[i]//}//}//returnmax;//......
  • JavaScript函数变量的生命周期,自执行函数、闭包、反转数组案例及冒泡排序案例
    一、变量的生命周期JavaScript变量的生命期从它们被声明的时间开始。局部变量会在函数运行以后被删除。全局变量会在页面关闭后被删除。二、自执行函数执行函数通常都是定义之后立即执行,以后都不再会调用,所以声明时可以省略函数名,因此自执行函数又叫匿名函数。通用的自执行......
  • 实验3 C语言函数应用编程
    任务11#include<stdio.h>2#include<stdlib.h>3#include<time.h>4#include<windows.h>5#defineN8067voidprint_text(intline,intcol,chartext[]);8voidprint_spaces(intn);9voidprint_blank_lines(intn......
  • Mysql为什么存储表数据为什么不能超过2000万行,深度解释 转发 https://www.toutiao.co
    下面是我朋友的面试记录:面试官:讲一下你实习做了什么。朋友:我在实习期间做了一个存储用户操作记录的功能,主要是从MQ获取上游服务发送过来的用户操作信息,然后把这些信息存到MySQL里面,提供给数仓的同事使用。朋友:由于数据量比较大,每天大概有四五千多万条,所以我还给它做了分表的操......