【存储过程和存储函数】MySQL

存储过程和存储函数

一、实验目的

  1. 掌握通过SQL语句CREATE PROCEDURE创建存储过程的方法。

  2. 掌握使用SQL语句CALL调用存储过程的方法。

  3. 掌握使用SQL语句ALTER PROCEDURE修改存储过程的方法。

  4. 掌握使用SQL语句DROP PROCEDURE删除存储过程的方法。

  5. 掌握使用CREATE FUNCTION创建存储函数的方法。

  6. 掌握使用SQL语句ALTER FUNCTION修改存储函数的方法。

  7. 掌握使用SQL语句DROP FUNCTION删除存储函数的方法。
    二、实验内容

  8. 存储过程的创建、修改、删除及调用SQL语句。

  9. 存储函数的创建、修改、删除及执行SQL语句。
    三、实验步骤

  10. 输入以下代码,创建存储过程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 @@
    使用CALL命令执行存储过程stu_info,其参数值为’张青平’。
    DELIMITER ;
    CALL stu_info();
    在这里插入图片描述

  11. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
    (1)创建一个存储过程stu_grade,查询学号为0001的学生的姓名、课程名称、分数。
    DELIMITER @@
    CREATE PROCEDURE stu_grade()
    BEGIN
    SELECT 姓名,课程名称,分数 FROM student_info s,grade g,curriculum c
    WHERE s.学号=g.学号 AND g.课程编号=c.课程编号 AND s.学号=‘0001’;
    END @@
    (2)调用存储过程stu_grade。
    DELIMITER;
    CALL stu_grade();
    在这里插入图片描述

  12. 使用studentsdb数据库中的student_info表、curriculum表、grade表。
    (1)创建存储过程stu_name,当任意输入一个学生的姓名时,查看其课程的最高分、最低分、平均分。
    DELIMITER @@
    CREATE PROCEDURE stu_name(IN name CHAR(8))
    BEGIN
    SELECT 姓名,MAX(分数) 最高分,MIN(分数) 最低分,AVG(分数) 平均分
    FROM student_info s,grade g,curriculum c
    WHERE s.学号=g.学号 AND g.课程编号=c.课程编号 AND 姓名=name;
    END @@
    (2)调用存储过程stu_name。
    在这里插入图片描述

(3)删除存储过程stu_name。
DROP PROCEDURE stu_name;
4. 使用studentsdb数据库中的grade表。
(1)创建一个存储过程stu_g_r,当输入一个学生的学号时,通过返回输出参数获取该学生选修课程的门数。
DELIMITER @@
CREATE PROCEDURE stu_g_r(IN cno CHAR(4),OUT num IN)
BEGIN
SELECT count(*) INTO num
FROM grade
WHERE 课程编号=cno;
END @@
(2)执行存储过程stu_g_r,输入学号0002。
DELIMITER;
CALL stu_g_r(‘0002’,@num);
(3)显示0002号学生的选课门数。
SELECT @num
在这里插入图片描述

  1. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数num_func,统计指定课程名称的选课人数。
    SET GLOBAL log_bin_trust_function_creators=1;
    DELIMITER @@
    CREATE FUNCTION num_func(cname VARCHAR(50) CHARACTER SET utf8)
    RETURNS INT
    BEGIN
    DECLARE num INT;
    SELECT COUNT(*)INTO num FROM grade g,curriculum c
    WHERE g.课程编号=c.课程编号 AND 课程名称=cname;
    RETURN num;
    END @@
    (2)执行存储函数num_func,查看“C语言程序设计”选课人数。
    在这里插入图片描述

  2. 使用studentsdb数据库中的curriculum表、grade表。
    (1)创建一个存储函数avg_func,通过游标统计指定课程的平均分。
    DELIMITER @@
    CREATE FUNCTION avg_func(cname VARCHAR(50) CHARACTER SET utf8)
    RETURNS DECIMAL
    BEGIN
    DECLARE v_avg 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_avg;
    CLOSE avg_Cur;
    RETURN v_avg;
    END @@
    (2)执行存储函数avg_func,查看“C语言程序设计”课程平均分。
    SELECT avg_func(‘C语言程序设计’) 课程平均分;
    在这里插入图片描述

(3)删除存储函数avg_func。
DROP FUNCTION avg_func;
四、实验思考

  1. 存储函数和存储过程如何将运算结果返回给外界?
    存储函数:RETURN
    存储过程:OUT参数或INOUT参数
  2. 存储函数有OUT参数、INOUT参数吗?
    没有

五、实验总结
1、收获
通过本次实验我知道了什么是存储过程和存储函数,学会了存储过程的创建、修改、删除及调用SQL语句和存储函数的创建、修改、删除及执行SQL语句。
2、存在的问题
在成功创建存储过程之后,使用CAll语句执行失败,原因是数据库字段问题,没有设置为utf8。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/321537.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【ESP32接入语言大模型之智谱清言】

1. 智谱清言 讲解视频: 随着人工智能技术的不断发展,自然语言处理领域也得到了广泛的关注和应用。智谱清言作为千亿参数对话模型 基于ChatGLM2模型开发,支持多轮对话,具备内容创作、信息归纳总结等能力。可以快速注册体验中国版…

机器学习 | 无监督聚类K-means和混合高斯模型

机器学习 | 无监督聚类K-means和混合高斯模型 1. 实验目的 实现一个K-means算法和混合高斯模型,并用EM算法估计模型中的参数。 2. 实验内容 用高斯分布产生 k k k个高斯分布的数据(不同均值和方差)(其中参数自己设定&#xff…

第十三讲 单片机驱动彩色液晶屏 bin档的烧录方法

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

解锁 JavaScript 数组的强大功能:常用方法和属性详解(下)

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云…

摆脱油光和黑头,先敷15分钟的亚马逊白泥面膜吧

寒冷干燥的冬季,是皮肤最容易出现问题的时候,像是油性皮肤就更容易出油,另外黑头之类的问题也会变得更加常见。因此,在这个季节里,我们需要特别注意保护皮肤,多多补水保湿,同时深入清洁毛孔是非…

SpringCloud.03.网关Gateway

目录 网关Gateway的概念: 准备 使用 方式一 因为配置了网关所以可以直接通过gateway发送请求 方式二 修改配置前:http://localhost:8082/provider/run 方式三(动态路由) 导入配置类 网关Gateway的概念: Spring Cloud Gateway 是 Spri…

分布形态的度量_峰度系数的探讨

集中趋势和离散程度是数据分布的两个重要特征,但要全面了解数据分布的特点,还应掌握数据分布的形态。 描述数据分布形态的度量有偏度系数和峰度系数, 其中偏度系数描述数据的对称性,峰度系数描述与正态分布的偏离程度。 峰度系数反映分布峰的尖峭程度的重要指标. 当…

失踪人员信息发布与管理系统:计算机毕设课题的研究与实践 springboot+java+vue+mysql

✍✍计算机编程指导师 ⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流! ⚡⚡ Java实战 |…

认知觉醒(九)

认知觉醒(九) 专注力——情绪和智慧的交叉地带 第一节 情绪专注:一招提振你的注意力 用元认知来观察自己的注意力是一件很有意思的事情,相信你可以轻易观察到这种现象:身体做着A,脑子却想着B。 跑步的时候,手脚在…

力扣日记1.14-【二叉树篇】108. 将有序数组转换为二叉搜索树

力扣日记:【二叉树篇】108. 将有序数组转换为二叉搜索树 日期:2023.1.14 参考:代码随想录、力扣 108. 将有序数组转换为二叉搜索树 题目描述 难度:简单 给你一个整数数组 nums ,其中元素已经按 升序 排列,…

现代控制理论基础

在学习卡尔曼滤波、粒子滤波、隐马尔可夫模型时候,经常会提到状态方程的概念,这边联想到当时学习过的一门课程现代控制理论,这边就简单回顾一下吧。在回顾之前,串联下高等数学中微分方程的知识点。 一. 微分方程 高等数学上册第…

架构师 - 架构师是做什么的 - 学习总结

架构师核心定义 架构师是什么 架构师是业务和技术之间的桥梁 架构师的核心职责是消除不确定性、和降低复杂性 架构设计环 架构师的三个核心能力 架构师的三个关键思维 架构师主要职责 架构设计 Vs 方案设计 架构设计前期 主要任务 澄清不确定性 明确利益干系人的诉求消除冲…

10.9.2 std::function 非OO的多态实现 Page185~187

源代码&#xff1a; #include <iostream> #include <functional> #include <list>using namespace std;//使用function模板类定义一个类型&#xff0c; //该类型要求作为T的 //函数类型是参数是string,返回值是void typedef std::function <void (std::s…

全链路压测方案(一)—方案调研

一、概述 在业务系统中&#xff0c;保证系统稳定至关重要&#xff0c;直接影响线上业务稳定和性能。测试工作作为保证生产质量的最后一关&#xff0c;扮演者重要的角色。全链路压测是一种重要的测试工具和手段。可以解决系统中多环节多节点无法全流程打满流量的痛点问题&a…

Ubuntu 22.04 Cron使用

需要定时处理的场景还是比较多的&#xff0c;比如信息推送、日志清理等。 这篇文章我们来说说如何使用cron来实现定时处理&#xff0c;以及监控任务的执行。 使用 Ubuntu中使用cron&#xff0c;要用到的命令是crontab。不加sudo时&#xff0c;处理的是个人的定时任务。当加上…

pytorch集智4-情绪分类器

1 目标 从中文文本中识别出句子里的情绪。和上一章节单车预测回归问题相比&#xff0c;这个问题是分类问题&#xff0c;不是回归问题 2 神经网络分类器 2.1 如何用神经网络分类 第二章节用torch.nn.Sequantial做的回归预测器&#xff0c;输出神经元只有一个。分类器和其区别…

计算机网络期末复习(基础概念+三套卷子练习)

第一章&#xff1a;计算机网络概念 计算机网络的概念 计算机网络的定义 计算机网络是指将地理位置不同的 具有独立功能的多台计算机 及其外部设备&#xff0c;通过 通信线路链接 起来&#xff0c;在网络操作系统&#xff0c;网络管理软件及网络通信协议的管理和协调下&#…

【生存技能】git操作

先下载git https://git-scm.com/downloads 我这里是win64&#xff0c;下载了相应的直接安装版本 64-bit Git for Windows Setup 打开git bash 设置用户名和邮箱 查看设置的配置信息 获取本地仓库 在git bash或powershell执行git init&#xff0c;初始化当前目录成为git仓库…

精品量化公式——“区域突破”,应对当下行情较好的主图看盘策略

不多说&#xff0c;直接上效果如图&#xff1a; ► 日线表现 代码评估 技术指标代码评估&#xff1a; VAR1, VAR2, VAR3&#xff1a;这些变量是通过指数移动平均&#xff08;EMA&#xff09;计算得出的。EMA是一种常用的技术分析工具&#xff0c;用于平滑价格数据并减少市场“…

Ubuntu共享文件到win

Ubuntu共享文件到win 1、安装samba sudo apt-get install samba samba-common2、创建一个共享文件夹&#xff0c;并设置777权限 mkdir /home/qyh/share sudo chmod 777 /home/qyh/share我的用户名&#xff1a;qyh。 3、添加用户及密码 sudo smbpasswd -a qyh4、修改配置文…