mysql存储过程的写法

news/2024/5/19 7:21:56/文章来源:https://blog.csdn.net/jato333/article/details/127013006

示例表 area_code_2022 :

DROP TABLE IF EXISTS `area_code_2022`;

CREATE TABLE `area_code_2022` (
  `code` bigint(12) unsigned NOT NULL COMMENT '区划代码',
  `name` varchar(128) NOT NULL DEFAULT '' COMMENT '名称',
  `level` tinyint(1) NOT NULL COMMENT '级别1-5,省市县镇村',
  `pcode` bigint(12) DEFAULT NULL COMMENT '父级区划代码',
  PRIMARY KEY (`code`),
  KEY `name` (`name`),
  KEY `level` (`level`),
  KEY `pcode` (`pcode`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

添加数据:

INSERT INTO `area_code_2022` (`code`, `name`, `level`, `pcode`)
VALUES
    (110000000000,'北京市',1,0),
    (110100000000,'市辖区',2,110000000000),
    (110101000000,'东城区',3,110100000000),
    (110101001000,'东华门街道',4,110101000000),
    (110101001001,'多福巷社区居委会',5,110101001000),
    (110101001002,'银闸社区居委会',5,110101001000),
    (110101001005,'东厂社区居委会',5,110101001000),
    (110101001006,'智德社区居委会',5,110101001000),
    (110101001007,'南池子社区居委会',5,110101001000),
    (110101001009,'灯市口社区居委会',5,110101001000),
    (110101001010,'正义路社区居委会',5,110101001000),
    (110101001013,'台基厂社区居委会',5,110101001000),
    (110101001014,'韶九社区居委会',5,110101001000),
    (110101001015,'王府井社区居委会',5,110101001000),
    (110101002000,'景山街道',4,110101000000),
    (110101002001,'隆福寺社区居委会',5,110101002000),
    (110101002002,'吉祥社区居委会',5,110101002000),
    (110101002003,'黄化门社区居委会',5,110101002000),
    (110101002004,'钟鼓社区居委会',5,110101002000),
    (110101002005,'魏家社区居委会',5,110101002000),
    (110101002006,'汪芝麻社区居委会',5,110101002000),
    (110101002008,'景山东街社区居委会',5,110101002000),
    (110101002009,'皇城根北街社区居委会',5,110101002000),
    (110101003000,'交道口街道',4,110101000000),
    (110101003001,'交东社区居委会',5,110101003000),
    (110101003002,'福祥社区居委会',5,110101003000),
    (110101003003,'大兴社区居委会',5,110101003000),
    (110101003005,'府学社区居委会',5,110101003000),
    (110101003007,'鼓楼苑社区居委会',5,110101003000),
    (110101003008,'菊儿社区居委会',5,110101003000),
    (110101003009,'南锣鼓巷社区居委会',5,110101003000),
    (110101004000,'安定门街道',4,110101000000),
    (110101004001,'交北头条社区居委会',5,110101004000),
    (110101004002,'北锣鼓巷社区居委会',5,110101004000),
    (110101004003,'国子监社区居委会',5,110101004000),
    (110101004004,'钟楼湾社区居委会',5,110101004000),
    (110101004005,'宝钞南社区居委会',5,110101004000),
    (110101004006,'五道营社区居委会',5,110101004000),
    (110101004009,'分司厅社区居委会',5,110101004000),
    (110101004011,'国旺社区居委会',5,110101004000),
    (110101004012,'花园社区居委会',5,110101004000);

查询显示一下数据:

接下来,我们以此表进行相关操作

其实,我是很喜欢sql server的,语法用起来非常顺手,本次的演示主要是熟悉mysql中写存储过程处理mysql的表数据,为什么要这样呢?因为我很懒啦,不想写数据库之外的代码.......

动力十足,开始啦。下面的存储过程(基于mysql8),可以作为一个标准的sql模式了,见到就不要错过呦!!!!废话太多了,上sql语句。

CREATE DEFINER=`root`@`%` PROCEDURE `computer`(
/* 传入的参数 */
in in_para1 int,

/* 既是传入参数,也是返回值 */
inout in_para2 int,
/* 返回值 */ 
out n_res VARCHAR(100)
)
begin

    /* 声明变量,注意变量名不能使用驼峰的形式,如:proMode */
        DECLARE pro_mode bigint DEFAULT 10000000000;
        DECLARE b_id,e_id int;
        DECLARE r_id int;
        DECLARE current_code bigint;
        DECLARE c_type varchar(100);
        

      /* 内存中的临时表,此种表有大小限制,数据量较大的地方,会有报错 */
    /*删除临时表*/
        drop temporary table if exists tmp1;

    /*创建临时表*/
        create temporary table tmp1
        (
            id int unsigned not null PRIMARY key auto_increment,
            code bigint not null
        )
        engine=memory; 
        
        /* 正常的数据表,一般不会有大小的限制 */
        /*删除正常表*/
        drop table if exists tmp2;
        
        /* 创建正常表  */
        create table tmp2
        (
            id int unsigned not null PRIMARY key auto_increment,
            code bigint not null
        ); 

    /*向正常表插入数据,临时表的操作雷同*/
        insert into  tmp2(code)
        select code from area_code_2022 where code % pro_mode =0;
        
        /*查询表的最小ID和最大id给变量赋值*/
        select min(id),max(id) into b_id,e_id from tmp2;
        
        /*显示变量的值*/
        /* select b_id,e_id; */
        
        /* 给变量赋值*/
        set r_id=b_id;
        
        /* while循环处理 */
        while r_id<=e_id do
              
                /*  模拟处理一些事情   */
                select code into current_code from tmp2 where id= r_id;
                
                /* if else 的使用 */
                if current_code% 10 =0 then
                     set c_type='0';
                elseif current_code% 10 =3 then
                     set c_type='3';
                else
                     set c_type='9';
                end if;
                
                /*  r_id的值加1 */
                set r_id=r_id+1;
        end WHILE;
        
        set n_res ='处理完成';
        select n_res;
end

哈哈,看着头疼吗?看注释啦,完整的mysql存储过程demo,熟练之后,见招拆招吧。

运行一下,看看效果?我是在Navicat上操作的

 点击运行之后,需要输入两个参数

 是不是咱们定义的?

随便给他们点值吧,不然怎么看效果呢?

 为什么有这么多的输出结果呢?不想说,去看sql语句吧!不知是Navicat的原因,还是怎么的,存储过程中超过20个的select,只能看见20个;

以上是界面的操作过车,下面我们使用sql语句来执行

 执行结果如下:

界面和sql语句形式执行存储过程全部演示完毕,多写几次,熟练就好了。 

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

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

相关文章

python识别选中文本

目标&#xff1a;识别鼠标选中区域的文本 be like : 这是我在模拟键鼠操作时遇到的情况&#xff0c;我需要根据某个位置返回的值进行判断&#xff0c;但是只是依赖pyautogui是做不到的。 方法一 经过上网冲浪寻找答案&#xff0c;被告知了此方法&#xff0c;经测试可行 impor…

Django项目想要在 Python Console里面进行操作 报错找不到对应模块

Django项目想要在 Python Console里面进行操作 报错找不到对应模块 问题描述 ModuleNotFoundError: No module named django ’ 问题原因 在进行对 Python console操作 进行管理查询要导入对应的模块&#xff0c;但是和项目中的models.py文件中的 导包引入 冲突了 导致在Py…

可持久化Trie

可持久化指的是可以记录所有的历史版本&#xff0c;即记录下来每一步操作后的状态 下图模拟过程 题目&#xff1a; 最大异或和 给定一个非负整数序列 a&#xff0c;初始长度为 N。 有 M 个操作&#xff0c;有以下两种操作类型&#xff1a; A x&#xff1a;添加操作&#xff0…

uniapp自用速查表 - 我的常用组件

纯私人class&#xff0c;公开文章是方便置顶.... <!-- 自定义导航栏 占位空间 --> <view class"navigationStyleCustomHeight alwaysOnTopBox0 bgColorForTheme"></view> <!-- 自定义导航栏 --> <view class"alwaysOnTopBox1 myNav…

java正则表达式简单使用

String email = "13072558368"; email = email.replaceAll("(\\d{3})\\d{6}(\\d{2})", "$1****$2"); System.out.println("email=" + email); email=130****68从第三个开始,计算6个数字,其中计算的6个数字用*替换String mobile = &q…

java public、protected、default、private

java 的访问控制符为了控制类还有类对应方法的访问做限制。如上的图表总结了类方法的访问控制范围,其实类的访问控制范围也是类似的情况。声明为public则不管外部包还是内部都能够访问,如果为default则只能本包内能够访问 关于类方法的访问范围,我们比较熟悉的是private还有…

java基于ssm的自助旅游管理系统

传统的旅游方式存在着漫无目的的寻找住、吃等问题&#xff0c;这样游客很累&#xff0c;也十分浪费时间。因此一个专门用来给游客介绍一些地方的景点、吃、住、特产等信息的在线旅游网站将给游客的出行选择带来极大的方便快捷。人们迫切能有一个旅游网站&#xff0c;解决旅游过…

linux软件包管理 实验报告

实验任务 对软件包进行一些基础操作 实验环境 一台centos7实验步骤 1.下载一个软件包进行实验 将软件包拖进去 查看是否存在 因为只是下载了软件包,并没有安装所以用qa并不能查找到软件包 2.查看安装包的基本信息 3.查看软件包安装在哪个路径 4.安装软件包 确认是否安装…

短期逆风造成了小鹏汽车的股价持续暴跌和错误定价

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 小鹏汽车2022年第二季度财务业绩分析 小鹏汽车近期发布的2022年第二季度财报显示&#xff0c;营收超过预期&#xff0c;但收益未达到预期。第二季度营收为11.1亿美元&#xff0c;略高于预期&#xff0c;而每股收益亏损为0.…

node-sass安装报错及其解决方案

一、下载依赖报错 这里报错了也就没后面的剧情了,就像电视剧刚开局主角就嗝屁了,看看执行 npm i 的时候报错类容: 二、解决方案 1、下载源在国外,更换中国镜像源,删除package.json中的node-sass,分别下载node包和node-sass的依赖包1 //更换淘宝镜像源 2 npm config set re…

【牛客 - 剑指offer】JZ61 扑克牌顺子 两种方案 Java实现

文章目录剑指offer题解汇总 Java实现本题链接题目方案一 哈希表方案二 排序剑指offer题解汇总 Java实现 https://blog.csdn.net/guliguliguliguli/article/details/126089434 本题链接 知识分类篇 - 模拟 - JZ61 扑克牌顺子 题目 题目主要信息 两副扑克牌抽五张&#xff0…

图像处理之直方图均衡

直方图均衡是一种将图像中的灰度分布转换成均匀分布&#xff0c;从而增强图像的对比度的图像处理方法。直方图均衡可以将原本偏白或者偏黑的图像转换成对比度符合人眼视觉的图像。 1 原理 连续空间   连续空间内的图像灰度r∈[0,L−1]&#xff0c;L表示灰度级r\in[0,L-1]&a…

上线记 | 人大金仓助力东莞卫生健康领域核心系统改造升级

随着人工智能、云计算、大数据、机器学习等新兴技术在医疗信息化建设中不断深入&#xff0c;以患者为中心、构建智慧医院、提升医院信息智能化问题迫在眉睫。为进一步深化医改工作&#xff0c;加强妇幼卫生信息管理&#xff0c;东莞市卫生健康局对东莞妇幼卫生信息平台进行了国…

[leetcode top100] 0923 多数元素,反转链表,翻转二叉树,回文链表,移动零

目录 169. 多数元素 - 力扣&#xff08;LeetCode&#xff09; 206. 反转链表 - 力扣&#xff08;LeetCode&#xff09; 226. 翻转二叉树 - 力扣&#xff08;LeetCode&#xff09; 234. 回文链表 - 力扣&#xff08;LeetCode&#xff09; 283. 移动零 - 力扣&#xff08;Le…

2106. 摘水果(每日一难phase-day22)

2106. 摘水果 在一个无限的 x 坐标轴上&#xff0c;有许多水果分布在其中某些位置。给你一个二维整数数组 fruits &#xff0c;其中 fruits[i] [positioni, amounti] 表示共有 amounti 个水果放置在 positioni 上。fruits 已经按 positioni 升序排列 &#xff0c;每个 positi…

3. 链表

链表是一种通过指针串联在一起的线性结构,每一个结点由两部分组成,一个是数据域一个是指针域(存放指向下一个节点的指针),最后一个结点的指针域指向null(空指针的意思)。  1. 链表基础单链表:指针域只指向结点的下一个结点。双链表:每一结点有两个指针域,一个指向下…

记批处理修改计算机名一次蠢操作造成电脑指定的域不存在或无法联系

近日,公司电脑需要修改计算机名(无域控),随意在网上找了一篇修改代码,正常操作右击脚本管理员运行,输入计算机名可正常修改,但是如果运行后不输入计算机名直接点确认,则会造成计算机重启后无法登陆,提示指定的域不存在或无法联系,刚好公司也有这种坑货的存在。虽然不…

java基于ssm 的留学资讯申请网的设计与实现

随着计算机信息化的深入&#xff0c;越来越多的行业使用管理系统来进行管理。出国留学逐渐成为许多大学生的热门选择&#xff0c;但是国外学校多&#xff0c;选择性大&#xff0c;如果从这些信息中&#xff0c;挑选符合自己的学校是非常重要的事情。基于此&#xff0c;开发”萨…

C#基础--集合

文章目录集合集合接口和类型列表创建列表集合初始值设定项添加元素插入元素访问元素删除元素搜索元素排序队列栈链表有序列表字典字典初始化器键的类型Lookup 类有序字典集性能集合 集合接口和类型 大多数集合类都可在System.Collections和System.Collections.Generic名称空间…

河北稳控科技手持VH501TC混合传感器信号采集读数仪工程监测仪器介绍

河北稳控科技手持VH501TC混合传感器信号采集读数仪工程监测VH501TC手持采集读数仪,设备是专用的多类型传感器手持式读数仪,主测传感类型为单弦式振弦传感器,辅测传感类型为电压、电流传感。采用 32 位 ARM 处理器和大尺寸全彩屏、阵列按键设计,彩屏,不受阳光影响,清楚明了…