数据库——存储过程及游标

news2024/9/28 21:24:08

 智能2112杨阳

一、目的与要求:

1、掌握存储过程的工作原理、定义及操作方法

2、掌握函数的工作原理、定义及操作方法

3、掌握游标的工作原理、定义及操作方法

二、内容:

1. 创建存储过程,用来自动统计给定订单号的订单总金额

源码:

delimiter //

create procedure `sum_price`(in s int)

    begin

    select SUM(quantity*item_price) from orderitems where o_num=s;

end //;

call sum_price(50010)

//

运行测试结果截图(输入订单号'50010'测试结果):

 

2.创建存储过程,自动搜索并添加客户及供货商帐号信息到新建的用户信息表。

 ①增加用户表信息user

表1   user表结构

字段名

字段说明

数据类型

主键

外键

非空

唯一

自增

id

ID号

int (11)

Y

N

Y

Y

Y

u_id

用户编号

int (11)

N

N

Y

Y

N

pwd

密码

blob

N

N

Y

N

N

remark

注释

varchar (255)

N

N

Y

N

N

源码:

create table user(

    id int(11) not null unique auto_increment,

    u_id int(11) not null unique,

    pwd blob not null,

    remark varchar(255) not null,

    primary key(id));

② 创建两个存储过程,分别把客户表的c_id和供货商表s_id的字段自动添加到用户信息表,补充pwd和remark字段。

注:1. 添加客户用非游标实现;2. 添加供货商用游标实现

要求:id字段自动增加,u_id 字段即客户或供货商的编号,pwd字段用AES_ENCRYPT函数加密,密码统一设置为用户编号u_id的值连接123456(如在当前表中u_id为10001,则其密码是10001123456),密钥是'hello'; remark字段内容是‘customer'或'supplier’

源码:

添加客户表帐号:

delimiter //

create procedure insertC()

begin

declare u_id int;

declare total int;

select count(*) into total from customers;

while total>0 do

select c_id into u_id from customers where. c_id+total=10005;

insert ignore into user(u_id,pwd,remark)values(u_id,aes_encrypt(`123456`,`hello`),`customer`);

set total=total-1;

end while;

end //

运行测试结果截图:

 

添加供货商帐号

create procedure insertS()

    begin

    declare numer int default 0;

    declare u_id int;

    declare inSup cursor for select s_id from suppliers;

    declare continue handler for not found set numer=1;

    open inSup;

    read_Sup:loop

    fetch inSup into u_id;

    if numer then leave read_Sup;

    end if;

    insert ignore into. user(u_id,pwd,remark)values(u_id,aes_encrypt('123456','hello'),'supplier');

    end loop read_Sup;

    close inSup;

end//

运行测试结果截图:

 

3.批量修正订单详情表orderitems中的水果价格与水果表fruits中的价格一致。

源码:

delimiter //

create procedure Update_price()

    begin

    declare ff_price decimal(8,2);

    declare ff_id char(10);

    declare done int default 0;

    declare update_price cursor for select f_price,f_id from. fruits;

    declare continue handler for not found set done=1;

    open update_price;

    read_update:loop

    fetch update_price into ff_price,ff_id;

    if done then

    leave read_update;

    end if;

    update orderitems set item_price=ff_price where orderitems.f_id=ff_id;

    end loop read_update;

    close update_price;

    end//

运行测试结果截图:

 

三、小结

1.遇到的问题及解决过程

问题:构造过程函数时报错

解决过程:学习相关语法并正确运行

2.产生的错误及原因分析

    错误:Variable or condition declaration after cursor or handler declaration

    原因分析:定义变量必须放在游标之前,因为放在了游标后面,所以导致此错误

3.体会和收获。

本次博客我学会了存储过程、函数、游标的工作原理、定义及操作方法。通过学习更多数据库功能的综合运用,能够更加便捷地使用数据库系统。同时也了解了更多数据库在实际生活中的应用。总的来说收获满满。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET 反射优化的经验分享

比如针对 GetCustomAttributes 通过反射获取属性的优化,以下例子 // dotnet run -c Release -f net7.0 --filter "*" --runtimes net7.0 net8.0public class Tests{public object[] GetCustomAttributes() => typeof(C).GetCustomAttributes(typeof(MyAttribute…

Windows server 2016 如何禁止系统自动更新

1.打开“运行”,输入cmd,点击“确定”。 2.输入sconfig,然后按回车键。 3.输入5,然后按回车键。 4.示例需要设置为手动更新,即输入M,然后按回车键。 5.出现提示信息,点击“确定”即可。

第四十一篇:移动端调试工具

1.下载工具 npm install vconsole 2.在main.js里全局引用 > import Vconsole from vconsole > new Vconsole()

Python面向对象三大特征(python系列20)

1.封装 定义: 数据角度:将基本数据类型复合成一个自定义类型。 作用:可读性更高,将数据与对数据的操作相关联。 行为角度:对类外提供必要的功能,隐藏实现的细节 作用:让调用者不必了解实现代码&…

ABAP 明细alv跳转到汇总alv一般模板

需求描述:做开发的同时,经常会有遇到,根据明细表进行逻辑汇总,在两个屏幕进行跳转,然后按钮还要做功能的情况,我这边记录一下最简单点模板,给新手可以直接复制使用的。 一、源代码 TYPE-POOLS…

基于JAVAEE技术校园车辆管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Mozilla 推出 Solo:借助 AI 帮助零编程用户创建网站

Mozilla 近日推出名为 Solo 的全新项目,面向没有任何编程经验的用户,通过融入 AI 能力,所创建的网站可以媲美专业开发者的开发效果。 Mozilla 表示该项目主要针对中小型企业、个体户,在官方演示中,用户只需要输入文本、…

Linux完成mysql数据库的备份与恢复

背景: 在进行数据报表的测试过程中,为了让我们的测试数据更加真实,因此我们需要同步生产数据到测试环境。方式有很多种,我这里介绍的是通过Linux完成数据同步。 备份数据: 执行命令:mysqldump -uxxx -pxxx…

HAAS 哈斯机床 读写刀补数据

哈斯机床不管是串口机床还是网口机床 都提供了Q命令 可以使用Q命令 进行刀具补偿的读取和写入 最多支持200把刀的 读取和写入

外贸SOHO建站怎么做?海洋建站方法策略?

外贸SOHO建站多少钱?外贸自助建站系统有哪些? 随着全球化的加速发展,外贸SOHO已经成为越来越多创业者的选择。然而,要想在竞争激烈的外贸市场中脱颖而出,一个专业的外贸网站是必不可少的。接下来海洋建站将探讨外贸SO…

jsp文件引用的css修改后刷新不生效问题

问题 在对 JavaWeb 项目修改的过程中,发现修改了 jsp 文件引入的 css 文件的代码后页面的样式没有更新的问题。 原因 导致这个问题的原因可能是因为浏览器缓存的问题。 解决方法 下面介绍两种解决方法,供大家参考: 1、给 link 标签的 c…

图文并茂讲VLAN,一遍就能理解

图文并茂讲VLAN,一遍就能理解 弱电行业圈2019-03-19 10:12 vlan的应用在网络项目中是非常广泛的,基本上大部分的项目都需要划分vlan,前几天我们讲到vlan的配置,有朋友就提到有没有更基础一些的内容,今天我们就从基础…

【LeetCode刷题】--172.阶乘后的零

172.阶乘后的零 方法&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;for(int i 5;i<n;i5){for(int x i; x % 50; x/5){ans;}}return ans;} }进一步优化&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;while (n…

今日开幕!飞凌嵌入式受邀参加2023年瑞萨技术交流日全国巡回展

来源&#xff1a;飞凌嵌入式官网 2023年瑞萨技术交流日全国巡回展&#xff08;广州站&#xff09;今日开幕&#xff0c;飞凌嵌入式再次受邀参加&#xff0c;并与来自新能源、自动化、工业物联网以及人工智能等领域的精英们共同探讨前沿技术。 在今日的巡展现场&#xff0c;飞凌…

绝地求生:PGC2023胜者组D2下半场:17天霸成功晋级,TL、NH跌入最后机会组

第四场 第一名&#xff1a;LGC 第二名&#xff1a;T5 第三名&#xff1a;FaZe 17仅剩两人&#xff0c;T5踩住高点&#xff0c;sujiu前顶时被T5架枪位击倒&#xff0c;小鬼的盾牌没能挡住对方的雷遗憾第五出局。然而T5自己也进圈不易&#xff0c;仅剩两人。 LG独狼卡住T5却忽…

STM32-02-STM32基础知识

文章目录 STM32基础知识1. STM32F103系统架构2. STM32寻址范围3. 存储器映射4. 寄存器映射 STM32基础知识 1. STM32F103系统架构 STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片&#xff0c;而Cortex M内核使用的是ARM v7-M架构&#xff0c;是为了替代…

新生儿智力检测的关键:培养潜能、关注发展

引言&#xff1a; 新生儿期是智力发展的关键时期&#xff0c;而科学的智力检测可以帮助父母更好地了解宝宝的认知水平和发展潜力。然而&#xff0c;在进行新生儿智力检测时&#xff0c;需要特别注意一些关键事项&#xff0c;以确保测试的准确性和对宝宝的尊重。本文将深入探讨…

【ECharts】从零实现echarts地图完整代码(纯前端,包含地图资源)

最终效果 标题环境搭建 这里忽略创建vue项目的操作过程&#xff0c;请自行搭建 vue2 项目、less 环境 安装下载 echarts 这里我们选择npm下载 npm install echarts安装成功后&#xff0c;在 main.js 中把echarts配置到this上 // 引入 echarts import * as Echarts from ech…

power EM与signal EM解决办法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 EM问题就是电流密度过高产生的,解决办法核心就是是分流或提高载流能力以及降低电流量。 1.面对power EM,首先检查missing via,补全via,还可以加宽,加密局部power mesh,一些power IO出pin有po…

Unity:Camera讲解之ClearFlags

Clear Flags四个选项讲解: 前三个都是常用的&#xff0c;第四个基本不会用。 skybox(天空盒&#xff09;&#xff1a; 主要是一种用于渲染游戏场景中天空的技术。它是一个包含6个纹理图片的立方体贴图&#xff0c;分别代表了从不同角度观察天空时所看到的前、后、上、下、左…