MySQL存储过程创建

 DQL

call create_order_infos(7,2,3);
delimiter $$
CREATE PROCEDURE create_order_infos(
in in_user_id int,
in in_product_id int,
in in_count int
)
BEGIN
-- 业务逻辑
SELECT in_user_id '用户id',in_product_id '产品id',in_count '购买数量';
end $$
delimiter ;

结果 

call create_order_infos(7,2,3);
delimiter $$
CREATE PROCEDURE create_order_infos(
in in_user_id int,
in in_product_id int,
in in_count int
)
BEGIN
-- -- 业务逻辑
-- SELECT in_user_id '用户id',in_product_id '产品id',in_count '购买数量';
DECLARE count_money DECIMAL(10,2); -- 用户余额
DECLARE one_price DECIMAL(10,2);-- 产品价格
DECLARE all_price DECIMAL(10,2);-- 总消费
DECLARE result_str VARCHAR(200);-- 用于返回消息
SELECT balance INTO count_money FROM user_wallet WHERE user_id=in_user_id;-- 赋值余额
SELECT price INTO one_price FROM product WHERE product_id=in_product_id;-- 获取产品单价
SET all_price=one_price * in_count; -- 消费总金额
-- 判断是否能够消费得起
IF all_price>count_money THEN
SET result_str = concat('金额不足',all_price,'您当前余额',count_money,'请充值。');
SIGNAL SQLSTATE '45000' set message_text = result_str;
END IF;
-- 1、修改用户钱包余额
UPDATE user_wallet SET balance=balance-all_price WHERE user_id=in_user_id;
-- 2、修改产品表的产品数量
UPDATE product SET stock = stock-in_count WHERE product_id=in_product_id;
-- 3、添加消费日志
INSERT INTO user_wallet_log(user_id,transaction_type,amount)VALUES(in_user_id,'消费',all_price);
-- 4、添加订单
INSERT INTO `order`(user_id,order_status,payment_time,total_price)VALUES(in_user_id,'已支付','已支付',now(),all_price);
SET new_order_id = LAST_INSERT_ID();
-- 5、添加订单详情
INSERT INTO order_info (order_id,product_id,quantity,unit_price)VALUES(new_order_id,in_product_id,in_count,one_price);
end $$
delimiter ;

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

7.8洛谷 字符串

P5650 基础字符串练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 如果 S[i] 0,则 dp[i] max(dp[i-1] 1, 1)(因为增加了 0,减少了 1)。如果 S[i] 1,则 dp[i] max(dp[i-1] - 1, -1)(因为减…

九浅一深Jemalloc5.3.0 -- ④浅*配置

目前市面上有不少分析Jemalloc老版本的博文,但最新版本5.3.0却少之又少。而且5.3.0的架构与5之前的版本有较大不同,本着“与时俱进”、“由浅入深”的宗旨,我将逐步分析最新release版本Jemalloc5.3.0的实现。 另外,单讲实现代码是…

这几类人,千万不要买纯电车

文 | AUTO芯球 作者 | 响铃 纯电车的冤大头真是太多了, 我之前劝过,有些人不适合买纯电车, 你们看,果然吧,麦卡锡最近的一份报告就披露了 去年啊,22%的人在买了电车后后悔了, 这些人说了&a…

亿康源精英盛宴暨亿康源启动成功举办

(本台记者报)2024年7月7日下午,亿康源精英盛宴暨启动仪式在杭州市中维歌德大酒店盛大举行。此次盛会不仅吸引了行业内的专业人才、著名投资界大咖和科技领域的杰出企业家,还汇聚了众多关注大健康产业的各界人士,共同见…

【qt】获取主机信息系统

话不多说,先一睹芳颜! 如果你也想达到这种效果,那咱们就开始吧! 目录 一.登录界面设计1.ui登录设计 二.加载界面1.lineEdit的密码输入模式2.lineEdit按回车跳转的信号3.密码的判断4.创建加载界面5.创建定时器来进行进度条的移动6.定时器执行的槽函数 三.主机信息界面1.主机信息…

HarmonyOS Next系列之Echarts图表组件(折线图、柱状图、饼图等)实现(八)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现(一) HarmonyOS Next 系列之验证码输入组件实现(二) HarmonyOS Next 系列之底部标签栏TabBar实现(三) HarmonyOS Next 系列之HTTP请求封装和Token…

2-28 基于matlab提取出频域和时域信号的29个特征

基于matlab提取出频域和时域信号的29个特征,主运行文件feature_extraction,fre_statistical_compute和time_statistical_compute分别提取频域和时域的特征,生成的29个特征保存在生成的feature矩阵中。程序已调通,可直接运行。 2-2…

初学嵌入式是弄linux还是单片机?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」, 点个关注在评论区回复“666”之后私信回复“666”,全部无偿共享给大家!!!1、先入门了51先学了89c52…

绝地求生PUBG没有开始游戏按钮的解决办法

绝地求生是一款特别热门的战术竞技型射击类游戏,游戏中玩家需要在游戏地图上收集各种资源,并在不断缩小的安全区域内持武器对抗其他玩家,让自己生存到最后。当游戏最后场上只剩下一支队伍的时候即可获得游戏胜利。然而一些玩家在游玩绝地求生…

@react-google-maps/api实现谷歌地图中添加多边围栏,并可编辑,编辑后可获得围栏各个点的经纬度

先上一张效果图 看看是不是大家想要的效果~ ❤️ 由于该功能微微复杂一点,为了让大家精准了解 我精简了一下地图代码 大家根据自己的需求将center值和paths,用setState做活就可以了 1.第一步要加入项目package.json中或者直接yarn install它…

Powershell 获取电脑保存的所有wifi密码

一. 知识点 netsh wlan show profiles 用于显示计算机上已保存的无线网络配置文件 Measure-Object 用于统计数量 [PSCustomObject]{ } 用于创建Powershell对象 [math]::Round 四舍五入 Write-Progress 显示进度条 二. 代码 只能获取中文Windows操作系统的wifi密码如果想获取…

论文解析——Full Stack Optimization of Transformer Inference: a Survey

作者及发刊详情 摘要 正文 主要工作贡献 这篇文章的贡献主要有两部分: 分析Transformer的特征,调查高效transformer推理的方法通过应用方法学展现一个DNN加速器生成器Gemmini的case研究 1)分析和解析Transformer架构的运行时特性和瓶颈…

Java进阶----继承

继承 一.继承概述 继承是可以通过定义新的类,在已有类的基础上扩展属性和功能的一种技术. 案例:优化 猫、狗JavaBean类的设计 狗类:Dog 属性:名字 name,年龄 age 方法:看家 watchHome(),Gett…

防火墙基础及登录(华为)

目录 防火墙概述防火墙发展进程包过滤防火墙代理防火墙状态检测防火墙UTM下一代防火墙(NGFW) 防火墙分类按物理特性划分软件防火墙硬件防火墙 按性能划分百兆级别和千兆级别 按防火墙结构划分单一主机防火墙路由集成式防火墙分布式防火墙 华为防火墙利用…

命令行运行git reflog(reference log)报错的解决办法

文章目录 1. 检查 Git 是否已安装2. 检查 PATH 环境变量3. 重新安装 Git 在Git中, reflog的英文全称是 “ reference log”。意思是 引用日志(参考日志)。它记录了本地仓库中HEAD和分支引用所指向的提交的变更历史。这包括了你所有的提交&…

推荐3款免费电脑工具

Tools-Web Tools-Web是一个在线工具箱,提供丰富的工具和功能,适用于日常工作和学习。根据用户评价,Tools-Web的工具种类丰富且操作简单,是日常工作和学习的好帮手。该工具箱涵盖了开发运维、文本处理、图片处理、图表处理、随机工…

收银系统源码-收银台副屏广告

1. 功能描述 门店广告:双屏收银机,副屏广告,主屏和副屏同步,总部可统一控制广告位,也可以给门店开放权限,门店独立上传广告位; 2.适用场景 新店开业、门店周年庆、节假日门店活动宣传&#x…

2通道音频ADC解码芯片ES7243L、ES7243E、ES7243,用于低成本实现模拟麦克风转换为IIS数字话筒

前言: 音频解码芯片某创参考价格: ES7243L 500:¥1.36 / 个 ES7243E 500:¥1.66 / 个 ES7243 500: ¥1.91 / 个 其中ES7243L工作电压为1.8V,与其他两款的3.3V工作电压不同&…

九科bit-Worker RPA 内容学习

简介: 什么是RPA? RPA(Robotic Process Automation,机器人流程自动化)本质上是一种“AI数字员工”,针对企业中存在的大批量、重复性、机械化人工操作,通过模拟人的工作流程使之实现自动化。 b…

Redhat 安装 docker 网络连接超时问题

目录 添加阿里云的Docker CE仓库 更新YUM缓存 安装 Docker Engine 启动并设置Docker自启动 验证 Docker 安装 [userlocalhost ~]$ sudo yum-config-manager --add-repohttps://download.docker.com/linux/centos/docker-ce.repo 正在更新 Subscription Management 软件仓库…