Ubuntu22.04下 MySQL8创建并使用存储过程

在Ubuntu下的MySQL 8中创建并使用存储过程:

  1. 使用mysql命令登录到MySQL服务器,例如:
mysql -u root -p

输入root用户的密码。

  1. 选择你想要创建存储过程的数据库,例如:
CREATE DATABASE mydb;USE mydb;CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,uid INT,name VARCHAR(100),email VARCHAR(255),pwd VARCHAR(100)
)CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;CREATE TABLE user_id (id INT AUTO_INCREMENT PRIMARY KEY,
)CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
  1. 复制存储过程代码,并粘贴到MySQL命令行界面中,然后按Enter键执行。例如:
delimiter //
CREATE DEFINER=`root`@`%` PROCEDURE `reg_user`(IN `new_name` VARCHAR(255), IN `new_email` VARCHAR(255), IN `new_pwd` VARCHAR(255), OUT `result` INT)
BEGIN-- 如果在执行过程中遇到任何错误,则回滚事务DECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGIN-- 回滚事务ROLLBACK;-- 设置返回值为-1,表示错误SET result = -1;END;-- 开始事务START TRANSACTION;-- 检查用户名是否已存在IF EXISTS (SELECT 1 FROM `user` WHERE `name` = new_name) THENSET result = 0; -- 用户名已存在COMMIT;ELSE-- 用户名不存在,检查email是否已存在IF EXISTS (SELECT 1 FROM `user` WHERE `email` = new_email) THENSET result = 0; -- email已存在COMMIT;ELSE-- email也不存在,更新user_id表UPDATE `user_id` SET `id` = `id` + 1;-- 获取更新后的idSELECT `id` INTO @new_id FROM `user_id`;-- 在user表中插入新记录INSERT INTO `user` (`uid`, `name`, `email`, `pwd`) VALUES (@new_id, new_name, new_email, new_pwd);-- 设置result为新插入的uidSET result = @new_id; -- 插入成功,返回新的uidCOMMIT;END IF;END IF;END//
  1. 存储过程创建成功,会返回一个确认消息。
    在这里插入图片描述

  2. 要调用存储过程并读取使用,你可以使用CALL语句,例如:

    CALL reg_user('new_username', 'new_email@example.com', 'new_password', @result);
    

    这里@result是一个用户定义的变量,用于存储存储过程返回的结果。

  3. 调用存储过程后,你可以查询变量@result的值来获取结果:

    SELECT @result;
    

请注意,确保你已经创建了useruser_id表,并且它们具有适当的字段和数据类型,以便存储过程可以正常工作。此外,确保user_id表有一个自增的id字段,以便在新用户注册时自动更新。

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

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

相关文章

网络芯片(又称为PHY网络芯片)

Realtek RTL8152B是一种常见的主板集成网络芯片(又称为PHY网络芯片)。PHY芯片是指将网络控制芯片的运算部分交由处理器或南桥芯片处理,以简化线路设计,从而降低成本。 https://www.realtek.com/Download/List?cate_id585 Realt…

【ArrayList和LinkedList的区别】

1. 什么是ArrayList和LinkedList? ArrayList 是Java中的一个动态数组,它实现了List接口。它可以根据需要自动扩展容量,并且支持随机访问元素。LinkedList 是Java中的一个双向链表,它也实现了List接口。它通过节点之间的链接来存储元素&…

15 B端产品的迭代优化

新产品上线后,产品经理还需要不断挖掘新需求,对产品进行持续迭代升级,让产品更加成熟强大。 需求管理 需求收集 需求来源: 内部:老板战略目标分解、产品研发团队、市场营销、用户服务等。 外部:客户、行…

pikachu Fileinclusion(local)

随便选择一个都试试 发现url上数字会变 发现文件名确实是file1.php~file5.php 那么会不会还有别的burp抓包选中数字 设置6-100的爆破 strat attack 678异常还有个100也是 先改一下试试看 其他的会报错 但是通过这我们可以得到路径 先写一个 下一步 读取系统文件 windows系统肯定…

【unity 新手教程 001/100】安装与窗口布局介绍

欢迎关注 、订阅专栏 【unity 新手教程】谢谢你的支持!💜💜 Unity下载与安装 👉点击跳转详细图文步骤:Unity Hub Unity 编辑器 窗口布局: Hierarchy: 层级窗口 | 默认 Sample Scene (main camera、direc…

数据库表约束

目录 一、约束的种类 二、非空约束(not null) 三、唯一性约束(unique) 3.1 字段级约束 四、主键约束(primary key,PK) 4.1 主键的概念(一张表例必须有外键的存在) 4.2 主键约束…

矩阵分析——线性积分方程组的矩阵解法研究

矩阵分析——线性积分方程组的矩阵解法研究 前言线性积分方程组的矩阵解法研究 前言 “矩阵分析”是一门选修课,当时选这门课程的原因是想着图像处理就涉及到很多矩阵运算。但没想到的是这门课程吧虽然是选修,最后的结课要求是让我们写一篇“论文”&…

.dat 文件如何查看内容

第一种通过hexdump -C hexdump -C potk-00199D-0435-20000201.dat 命令查看 第二种 vscode ,将文件拖到vscode 工作区,选中要显示的乱码,点击右上角HEX图标,如下面两张图示

Nginx设置目录的访问权限,方便访问静态资源

从日志信息来看,确实是权限问题(Permission denied)。我们可以重新检查并设置权限,确保 Nginx 用户有权限访问这些文件。 检查 Nginx 用户: 首先确认 Nginx 使用的用户,一般是 www-data 或 nginx。你可以在…

java HashMap代码解释

SimpleHashMap的部分抄袭解释 package com.zzc.common.utils;import lombok.extern.slf4j.Slf4j;import java.io.IOException; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.AbstractCollecti…

UM980高精度RTK定位模块支持哪些通信接口?

注 产品参数信息请以和芯星通最新版官方手册为准。

python-NLP:1中文分词

文章目录 规则分词正向最大匹配法逆向最大匹配法双向最大匹配法 统计分词语言模型HMM模型 jieba分词分词关键词提取词性标注 规则分词 基于规则的分词是一种机械分词方法,主要是通过维护词典,在切分语句时,将语句的每个字符串与词表中的词进行…

Java代码基础算法练习-字符串分类统计-2024.07.24

任务描述: 输入一行字符(字符串长度不超过255),分别统计出其中英文字母、数字、空格和其他 字符的个数。(提示,空格ASCALL码值为32) 解决思路: 输入一字符串,先判断是否…

C#-日期时间字符串转时间戳,并且考虑时区问题

/// <summary>/// 假定服务器机器时区为东八&#xff0c;配置timeString也为东八&#xff08;通常服务器和配置的时区也必须一致&#xff09;。利用utc相对时间差&#xff0c;计算出对应时间戳/// 此方法无需考虑客户端本地时区/// </summary>/// <param name&q…

对递归的一些理解。力扣206题:翻转链表

今天在刷力扣的时候&#xff0c;在写一道翻转链表的题目的过程中&#xff0c;在尝试使用递归解决该问题的时候&#xff0c;第一版代码却每次都返回的是null&#xff0c;这个错误让我尝试去debug了一下&#xff0c;最终找出了问题&#xff0c;并且让我对递归有了一些更深的理解&…

顶级电子合同平台推荐:2024年精选

本文将介绍以下10款工具&#xff1a;e签宝、法大大、上上签、金格签约、契约锁、DocuSign、Concord、PandaDoc、Agiloft、Evisort。 在当今数字化时代&#xff0c;选择一个合适的电子合同平台可能会让人感到困惑&#xff0c;如何判断哪个平台最适合企业的需求&#xff1f;电子合…

Linux 必备基础知识与常用命令大汇总

这是我整理的关于Linux基础知识的笔记&#xff0c;主要为了方便在长期不用Linux的情况下&#xff0c;突然需要使用时可以快速查找。我最初有些犹豫是否应该写成文章&#xff0c;但我认为对于处于相似境遇的人来说&#xff0c;能够方便地复制和使用这些知识会很有帮助&#xff0…

SpringCloud:使用OpenFeign优化前面的Nacos实现高效购物车商品信息处理

在现代电商系统中&#xff0c;购物车的性能直接影响用户的购物体验。为了提升系统性能和用户满意度&#xff0c;我们可以使用Spring Cloud的OpenFeign和负载均衡器来高效地处理购物车中的商品信息。本文将详细介绍如何在Spring Cloud中集成这些组件&#xff0c;并实现一个高效的…

【汽车】常见缩略语说明

缩略语英文名称中文名称3GPP3rd Generation Partnership Project第三代合作伙伴计划5GAA5G Automotive Association5g汽车协会APPApplication应用ADASAdvanced Driver Assistant Systems高级驾驶辅助系统CaaSCarasaService汽车即服务CANController Area Network控制器局域网络C…

Java之数组应用-选择排序-插入排序

已经完全掌握了冒泡排序和二分查找的同学&#xff0c;可以自己尝试学习选择、插入排序。不要求今天全部掌握&#xff0c;最近2-3天掌握即可&#xff01; 1 选择排序 选择排序(Selection Sort)的原理有点类似插入排序&#xff0c;也分已排序区间和未排序区间。但是选择排序每次…