IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql存储过程的写法 -> 正文阅读

[大数据]mysql存储过程的写法

示例表 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语句形式执行存储过程全部演示完毕,多写几次,熟练就好了。?

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 21:03:44  更:2022-09-24 21:07:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 9:43:46-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码