当前位置:首页 > 日记 > 正文

MySQL存储过程使用一个实例详细的解决方案

MySQL存储过程使用一个实例详细的解决方案
示例1,一个简单存储过程游标的示例
复制代码代码如下所示:
$分隔符
如果程序存在getuserinfo美元下跌
创建程序getuserinfo(在date_day DateTime)

一个例子
-存储过程命名为:getuserinfo
该参数是:date_day日期格式:2008-03-08

开始
声明_username varchar(12);-用户名
声明_chinese int;语言
声明_math int;数学
声明完成;
-光标的定义
声明rs_cursor光标选择用户名,中文,数学,DateDiff从用户信息。
声明未找到的已完成集= 1的继续处理程序;
-得到昨天的日期
如果date_day为null,然后
集date_day = date_add(现在),间隔(1天);
最后如果;
打开rs_cursor;
cursor_loop:环
取rs_cursor为_username,_chinese,_math;以数据

如果做= 1然后
离开cursor_loop;
最后如果;
更新表
更新infosum集总= _chinese + _math么= _username;
循环结束cursor_loop;
rs_cursor关闭;

结束美元
分隔符;
例2。存储过程游标循环跳转出现。
MySQL存储过程中,光标的操作需要执行一个操作的血。众所周知,MySQL中的游标循环操作通常使用三种方式:循环、重复和。三环。用同样的方法。它以前从未使用过,所以记下来是为了方便。
1.repeat
复制代码代码如下所示:
重复
声明;
直到表达
末端重复
演示
声明数字;
声明my_string varchar(255);
重复
集my_string = concat(my_string,num,',');
设置数字= 1;
直到数字< 5
末端重复;

2.while
复制代码代码如下所示:
而表达
声明;
结束的时候
演示
声明数字;
声明my_string varchar(255);
设置数字= 1;
设置;
而民10do
集my_string = concat(my_string,num,',');
设置数字= 1;
结束的时候;
3.loop(有一个很重要的迭代,离开它)
代码遵循复制代码如下所示
声明数字;
申报STR varchar(255);
设置数字= 1;
集my_string =;
loop_label:环
如果num < 10then
离开loop_label;
endif;
设置数字= 1;
如果(Num MOD3)然后
迭代loop_label;
其他的
集my_string = concat(my_string,num,',');
ENDIF;
结束循环;

PS:能理解迭代是继续我们常用的程序,和迭代是打破的。当然,在mysql存储过程中,我们需要在循环结构中有一个名字,其余的都是一样的。
示例3,在MySQL存储过程中使用多个游标

首先创建一个表,插入一些测试数据:
复制代码代码如下所示:
如果表中存在netingcn_proc_test滴;
创建表(` netingcn_proc_test `
` ID `整数(11)不为空auto_increment,
`名字` varchar(20),
`密码` varchar(20),
主键(id)
InnoDB引擎=);
插入netingcn_proc_test(名称、密码)值
('procedure1 ','pass1),
('procedure2 ','pass2),
('procedure3 ','pass3),
('procedure4 ','pass4);下面是一个简单的存储过程实例:
如果程序存在test_proc滴;
分隔符
创建程序test_proc()
开始
-声明一个标志,以确定游标是否经过或未完成。
声明默认值为0;
-声明一个变量来存储从游标中提取的数据
-特别注意的名称的情况下,不能与在游标中使用的相同,否则所获得的数据是空的。
申报tname varchar(50)默认为空;
DECLARE tpass varchar (50) DEFAULT NULL;
-声明与游标对应的SQL语句
声明当前游标
选择名称,密码netingcn_proc_test;
-在光标循环结束时,完成将设置为1。
声明未找到的已完成集= 1的继续处理程序;
执行查询
开放课程;
-遍历光标的每一行
重复
-将一行信息存储在相应的变量中
接电流为tname,tpass;
如果不这样做
在这里你可以使用tname的信息,tpass
选择tpass tname;
最后如果;
直到完成结束重复;
关闭当前;
终点

Delimiter;
-执行存储过程
电话test_proc();
应当注意的是,变量声明、游标声明和处理程序声明的顺序不能弄错。我们必须首先声明变量,再次声明游标,最后声明处理程序。如果我们想使用两个或多个游标,这非常简单。让我们来谈谈如何使用两件事:
复制代码代码如下所示:
如果存在test_proc_1下降过程;
分隔符
创建程序test_proc_1()
开始
声明默认值为0;
申报的TID int(11)默认0;
申报tname varchar(50)默认为空;
声明tpass varchar(50)默认为空;
声明cur_1光标
选择名称,密码netingcn_proc_test;
声明cur_2光标
选择ID,名字从netingcn_proc_test;
声明未找到的已完成集= 1的继续处理程序;
打开cur_1;
重复
取cur_1为tname,tpass;
如果不这样做
选择tpass tname;
最后如果;
直到完成结束重复;
近cur_1;
-注意这里所做的值必须重置为0。
设置完成= 0;
打开cur_2;
重复
取cur_2为tid,tname;
如果不这样做
选择tid,tname;
最后如果;
直到完成结束重复;
近cur_2;
终点
/ /
Delimiter;
电话test_proc_1();

上面的代码中,作为第一个例子一样,是一个指针的声明和遍历游标。需要注意的是,设置完成= 0使用之前经过二游标的重要,因为当第一个指针遍历其价值是通过句柄设置为1,如果0没有设定,然后二游标不会走过。当然,好的习惯是每一个打开的游标操作前使用此语句,以确保光标可以真正走过。当然,你也可以使用开始块嵌套的方式来处理多个游标,如:
复制代码代码如下所示:
如果存在test_proc_2下降过程;
分隔符
创建程序test_proc_2()
开始
声明默认值为0;
申报tname varchar(50)默认为空;
声明tpass varchar(50)默认为空;
声明cur_1光标
选择名称,密码netingcn_proc_test;
声明cur_2光标
选择ID,名字从netingcn_proc_test;
声明未找到的已完成集= 1的继续处理程序;
打开cur_1;
重复
取cur_1为tname,tpass;
如果不这样做
选择tpass tname;
最后如果;
直到完成结束重复;
近cur_1;
开始
声明默认值为0;
申报的TID int(11)默认0;
申报tname varchar(50)默认为空;
声明cur_2光标
选择ID,名字从netingcn_proc_test;
声明未找到的已完成集= 1的继续处理程序;
打开cur_2;
重复
取cur_2为tid,tname;
如果不这样做
选择tid,tname;
最后如果;
直到完成结束重复;
近cur_2;
结束;
终点
/ /
Delimiter;
电话test_proc_2();

相关文章

表XXX标记为撞上(自动)在MySQL(自动)

表XXX标记为撞上(自动)在MySQL(自动)

撞上,标记,电脑软件,XXX,MySQL,网站的MySQL数据库中有如下错误: 复制代码如下:表。 dnzsw04_archives '标记为撞上(自动) 问题是,相关表损坏,在一般情况下,表可以修复与phpMyAdmin。 如果它是一个独立的服务器,您也可以使用命令行来修复它: 复制代…

nicconfigsvc是nicconfigsvc.exe-

nicconfigsvc是nicconfigsvc.exe-

电脑软件,nicconfigsvc,exe,评论:详细的介绍了nicconfigsvc.exe - nicconfigsvc过程 进程文件:nicconfigsvc或nicconfigsvc.exe 过程名称:戴尔电源管理模块 过程类别:安全风险的过程 英文描述: nicconfigsvc.exe是一个网络的电源管理设置相关…

incdsrv.exe过程的作用是什么的inc

incdsrv.exe过程的作用是什么的inc

作用,过程,电脑软件,incdsrv,exe,点评:incdsrv.exe是前尼禄光盘刻录软件的一部分 进程文件:incdsrv或incdsrv.exe 工序名称:前尼禄政府服务 过程类别:安全风险的过程 英文描述: incdsrv.exe是前尼禄系统服务设置为自动安装InCD时。这个过程被…

win7开机动画的异常解决绿色滚动条

win7开机动画的异常解决绿色滚动条

滚动条,开机动画,异常解决,电脑软件,Vista,点评:四种颜色的球的旋转和集成Windows win7开机动画默认的标志,现在已经启动动画的一些朋友是错的,但Vista像绿色的滚动,也不怎么修改回来,在这里与大家分享一个好方法,感兴趣的朋友可以看看 win7开机…

解析MySQL多表查询的实现

解析MySQL多表查询的实现

多表查询,电脑软件,MySQL,查询是数据库的核心。这里我们将介绍如何实现MySQL多表查询。如果您遇到mysql多表查询中的问题,可以查看一下。 MySQL多表查询: 复制代码代码如下所示: 如果不存在,创建表(联系人) contact_id int(11)不为空auto_increment…

造成mysqldump缓冲池的污染研究

造成mysqldump缓冲池的污染研究

污染,缓冲池,电脑软件,mysqldump,前言:uff1a Oracle的MySQL最近发布在其官方博客上一些5.6变量的默认值的修改,innodb_old_blocks_time默认值是从0到1000取代(1S) 关于这个参数的作用的摘录如下: 在毫秒(ms)多久一块插入老子要搬到新的子列表第…

mysql常见错误代码比较

mysql常见错误代码比较

常见错误,代码,电脑软件,mysql,常见的错误! 1016错误:文件无法打开,使用背景修复或修复使用phpMyAdmin。 1044错误:数据库用户权限不足,请与空间经销商联系解决 1045错误:数据库服务器数据库用户名/数据库名称/数据库密码错误。请与太空商联系,核…

三Windows8快捷键你应该知道

三Windows8快捷键你应该知道

快捷键,你应该知道,电脑软件,点评:Windows的快捷键在业界仍然十分谨慎。大多数非关键操作是由单手(通常是左手单手)操作快捷键完成的,但在Windows 8上。 对于安装Windows 8.1的人来说,您可以掌握几个关键的快捷方式,您可能会在一些意想不到的情…

让win7查看更方便四设置使你的Wind

让win7查看更方便四设置使你的Wind

设置,使你,更方便,迷人,电脑软件,点评:对于Windows7的用户,你让你的Windows7更个性化和更容易使用,它是非常重要的。在这篇文章中,我们将介绍一个Windows7系统看你更方便的设置。 Windows7是微软新一代操作系统。随着它的普及推广,Windows7用户i…

XP升级到Vista未能启动只显示黑屏

XP升级到Vista未能启动只显示黑屏

解决方案,启动,只显示,升级到,黑屏,点评:升级后Vista未能启动,无法进入XP系统无法进入Vista,但显示黑屏,在这种情况下该怎么办这里有一个很好的解决方案,有类似情况的朋友可以参考一下。 当您无法升级到Windows Vista时,您尝试启动,但不能进入Wind…

的过程,是一个kpf4gui.exe查询kpf4g

的过程,是一个kpf4gui.exe查询kpf4g

查询,是一个,过程,电脑软件,kpf4gui,点评:kpf4gui.exe是防火墙相关的过程 进程文件:kpf4gui或kpf4gui.exe 进程名称:Kerio个人防火墙组件 过程类别:安全风险的过程 英文描述: kpf4gui.exe是一个过程,属于凯里奥河的个人防火墙。,凯里奥河,它也被…

抖音眼睛转场特效是怎么拍的?附详细

抖音眼睛转场特效是怎么拍的?附详细

抖音眼睛转场特效是怎么拍的?附详细拍摄教程介绍,转场,抖音,教程,特效,拍摄视频,摄像头,界面,快速,抖音眼睛无缝转场拍摄视频,现在十分的火爆,不少人都试过,但是效果却不好。那抖音眼睛转场怎么拍摄最佳呢?一起看看文中的介绍。抖音眼睛转场特效怎么做1…