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

MySQL存储过程游标循环介绍

MySQL存储过程游标循环介绍
MySQL的存储过程得到了版本5的支持,所以目前可以使用存储过程。

一些简单的调用和语法规则在这里是多余的,在因特网上有很多例子,主要是关于常用游标和循环嵌套的使用。
首先,介绍了循环的分类。
(1)而…结束的时候
(2)回路…结束循环
(3)重复…末端重复
(4)转到
这里有三个标准循环:while循环、循环循环和重复循环。还有一个非标准循环模式:转到(不引入)。
(1)而…结束的时候
复制代码代码如下所示:
创建程序(P14)
开始
声明v;
设置v=0;
而V<5
插入t值(v);
设置V=v + 1;
结束的时候;
结束;

这是while循环的方式,它类似于if语句,并使用设置= 0语句来防止常见错误。如果没有初始化,则默认变量值为null,NULL和任何值操作结果为null。
(2)重复…末端重复
复制代码代码如下所示:
创建程序(P15)
开始
声明v;
设置v=0;
重复
插入t值(v);
设置V=v + 1;
直到v = 5
末端重复;
结束;

这是重复循环的一个例子,它的功能与前一个while循环相同,不同的是在执行之后检查结果,而while是一个预执行检查。它类似于do语句。注意后面语句后面没有分号。这里不能写分号。当然,您可以添加额外的分号。
(3)回路…结束循环
复制代码代码如下所示:
创建过程(P16)
开始
声明v;
设置v=0;
loop_label:环
插入t值(v);
设置V=v + 1;
如果v或5然后
离开loop_label;
最后如果;
结束循环;
结束;

上面是循环循环的一个例子,循环循环不需要一个初始条件,类似于while循环,它不需要结束条件,也不需要重复循环。
迭代迭代
如果目标是一个迭代(迭代)语句,则必须使用休假语句。
复制代码代码如下所示:
创建程序P20()
开始
声明v;
设置v=0;
loop_label:环
如果v = 3然后
设置V=v + 1;
迭代loop_label;
最后如果;
插入t值(v);
设置V=v + 1;
如果v或5然后
离开loop_label;
最后如果;
结束循环;
结束;

迭代(迭代)语句和左语句也是循环中的循环引用。这有点像C语言中的继续。类似地,它可以出现在复合语句中,使用复合语句标签,而迭代(迭代)意味着重新启动复合语句。
以上是介绍循环的几个条件,然后我们用游标介绍一个例子来详细解释。
复制代码代码如下所示:
开始
声明p_feecode varchar(20);
声明p_feename varchar(20);
声明p_billmoney浮(12);
声明p_schememoney浮(12);
声明allmoney浮(10);
声明allusedmoney浮(10);
声明p_year varchar(50);
声明p_totalcompeleterate浮(12);
声明完成int(10);
声明标志int(2);
声明feecodecursor光标选择feecode费; / /声明游标变量
声明未找到的已完成集= 1的持续处理程序;
设置完成= 0;
选择date_format(现在的()(),Y)为p_year;
打开feecodecursor; / /打开游标
loop_label:环
取feecodecursor为p_feecode; / /光标移动到变量声明
如果做= 1然后
离开loop_label;
其他的
设置标志= 0;
最后如果;
集p_schememoney = 0;
集p_billmoney = 0;
选择feename为p_feename费,feecode = p_feecode;
选择和(billmoney)从bill_data哪里feecode = p_feecode和billdate像Concat到p_billmoney(p_year,%);
选择schememoney为p_schememoney从total_scheme哪里feecode = p_feecode和schemedate像连接限制1(p_year,%);
如果标志= 0,那么
设置完成= 0;
最后如果;
如果p_schememoney = 0
集p_totalcompeleterate = - 1;
其他的
集p_totalcompeleterate =(1×p_billmoney) / p_schememoney;
最后如果;
插入total_summary值(p_feecode,p_feename,p_year,p_billmoney,p_totalcompeleterate);
承诺;
结束循环;
近feecodecursor; / /关闭游标循环结束后
终点

以上只是一个简单的例子,说明如何使用。您不需要关注特定的业务逻辑。你只需要关注标志位的值的修改,当循环。和游标声明如何使用它,并没有什么大的差别的具体操作之间的内部和普通的SQL语句。下面是一层循环,和复杂的业务需要两层三层,继续被嵌套在同样的方式。双嵌套循环如下,你只需要集中精力在嵌套结构。
复制代码代码如下所示:
开始
声明p_projectid varchar(20);
声明p_projectname varchar(20);
声明p_feecode varchar(20);
声明p_feename varchar(20);
声明p_projectschememoney浮(10);
声明p_projectmoney浮(10);
声明p_billmoney浮(10);
声明p_year varchar(50);
声明p_projectfeecompeleterate浮(10);
声明done1 int(10);
声明done2 int(10);
声明标志int(2);
声明feecodecursor光标选择feecode费;
声明继续处理程序没有找到设置done1 = 1;
集done1 = 0;
选择date_format(现在的()(),Y)为p_year;
删除从project_fee_summary;
打开feecodecursor;
重复/开始嵌套的第一级
取feecodecursor为p_feecode;
选择feename为p_feename费,feecode = p_feecode;
如果不done1然后
开始
声明projectidcursor光标选择projectid项目;
声明继续处理程序没有找到设置done2 = 1;
集done2 = 0;
打开projectidcursor;
loop_label: / /环二层嵌套开始
取projectidcursor为p_projectid;
选择项目名为p_projectname从项目projectid = p_projectid;
如果done2 = 1
离开loop_label;
其他的
设置标志= 0;
最后如果;
如果不done2然后
集p_projectschememoney = 0;
选择和(billmoney)从bill_data哪里feecode = p_feecode和projectid = p_projectid和billdate像Concat到p_billmoney(p_year,%);
选择projectschememoney为p_projectschememoney从project_scheme哪里feecode = p_feecode和projectid = p_projectid;
如果标志= 0,那么
集done2 = 0;
最后如果;
如果p_projectschememoney = 0
集p_projectfeecompeleterate = - 1;
其他的
集p_projectfeecompeleterate =(1×p_billmoney) / p_projectschememoney;
最后如果;
插入project_fee_summary值(p_feecode,p_projectid,p_projectname,p_feename,p_year,p_billmoney,p_projectfeecompeleterate,p_projectfeecompeleterate)。
最后如果;
结束循环;
选择和(billmoney)从bill_data哪里feecode = p_feecode和billdate像Concat到p_projectmoney(p_year,%);
集p_projectfeecompeleterate =(1×p_projectmoney) / p_projectschememoney;
插入project_fee_summary值(p_feecode,全
近projectidcursor;
结束;
最后如果;
直到done1
末端重复;
近feecodecursor;
终点

相关文章

Linux和Windows的行字符差问题

Linux和Windows的行字符差问题

字符,电脑软件,Linux,Windows,点评:Linux的换行符在Windows记事本打开,或黑色斑点是由Linux和Windows之间的线的线引起的差异。 Linux和Windows的行字符差问题 linux的换行符在Windows记事本的换行符是由Linux和Windows之间的线差线问题引起…

什么是QQ登录异常通知

什么是QQ登录异常通知

通知,登录,电脑软件,QQ,如果你发现你的QQ账号有异常行为,那么登录到QQ后,你会收到一个异常通知弹出框: 当您看到异常时,建议您及时采取适当措施,避免QQ密码泄露造成的风险: 1,如果你的QQ提示出现异常,你的密码可能被泄露了,建议你及时杀毒并修改你…

win7自动登录并自动连接宽带拨号的

win7自动登录并自动连接宽带拨号的

宽带,自动登录,连接,方法,电脑软件,评论:现在我们基本上使用宽带拨号上网。Win7,我们可以自动登录,通过简单的设置,并自动连接宽带拨号网络登录账号后。 1。首先,我们要让win7实现自动登录 2点,点;开始;查找所有程序;在附录;运行; 还有一个快捷键,快…

对schsvr.exe-schsvr的作用是什么

对schsvr.exe-schsvr的作用是什么

作用,电脑软件,schsvr,exe,评论:详细的介绍了schsvr.exe - schsvr过程 进程文件:schsvr或schsvr.exe 进程名称:winscheduler 过程类别:安全风险的过程 英文描述: schsvr.exe是一个过程,属于winscheduler是安装在InterVideo WinDVD和提供WinDVD…

QQ空间背景音乐歌曲的随机播放在哪

QQ空间背景音乐歌曲的随机播放在哪

空间,放在,背景音乐,歌曲,电脑软件,在QQ空间中,背景音乐歌曲是随机播放的,它在哪里设置 登录QQ空间,点击音乐盒后台音乐管理排序,在背景音乐歌曲随机播放前检查保存修改即可。 温馨提示:你设置了一个随机播放QQ空间背景音乐,如果朋友访问你的空…

删除/卸载Firefox(Firefox)浏览器扩

删除/卸载Firefox(Firefox)浏览器扩

浏览器,卸载,扩展方法,删除,图形,使用Firefox浏览器的用户有时希望卸载/删除扩展,但不操作,共享经验。 卸载扩展的方法(两个步骤)如下: 第一步,火狐浏览器,点击工具>选项>菜单;打开选项;窗口(图1),默认为正常设置页面,点击右下角的添加;管理;按钮,打开窗口…

Oracle删除现有表的实例。

Oracle删除现有表的实例。

删除,实例,电脑软件,Oracle,SQL代码 复制代码代码如下所示: select count(*)从user_objects哪里object_name =上(p_table_name); select count(*)从user_tables哪里table_name =上(p_table_name); 创建或替换程序p_drop_table_if_exist_v1( p_table_na…

对dseraser过程的安全dseraser.exe

对dseraser过程的安全dseraser.exe

过程,电脑软件,dseraser,exe,点评:dseraser.exe是绝对的屏蔽相关证据消除产品中的一部分,用来清理互联网浏览历史记录 进程文件:dseraser或dseraser.exe 过程名称:绝对屏蔽 过程类别:安全风险的过程 英文描述: dseraser.exe是一个过程,属于绝对…

微软SQLServer安全问题

微软SQLServer安全问题

安全问题,电脑软件,SQLServer,您正在查看的Oracle课程是微软SQL Server安全问题。 微软SQL Server 7安全问题 微软公司 微软SQL Server 7被称为SQL Server 7 )。 SQL Server 7中有哪些安全模式 两种:SQL Server和Windows NT(混合)和Windows…

QQ空间中设置的QQ空间权限分配方法

QQ空间中设置的QQ空间权限分配方法

空间,设置,方法,权限分配,解决方案,一些网民想建立QQ空间的权限。只有有限数量的人能够进入太空。他们找不到QQ空间设置,不能分配权限。现在共享上述方法。 方法:进入QQ空间后,单击顶部菜单中的齿轮图标(下图)。它是设置菜单。点击后,你可以看到…

系统暂时无法处理您的事务,输入信息

系统暂时无法处理您的事务,输入信息

输入,系统,您的,不正确,事务,问题: 我申请了网上银行,在电脑上插了U盾,打开了浏览器,注册了银行网站,输入了账号和密码登录网上银行,却收到了提示。系统暂时无法处理您的事务,请稍候再试。输入信息错误。请重试输入的信息不正确,参考代码013021109…

PHP反射使用实例和对PHP反射API的

PHP反射使用实例和对PHP反射API的

反射,中文,描述,实例,电脑软件,在近年来的发展,我们需要的数量,名称,和秩序的一类方法的参数,使参数的名称可以从_get美元了。 如果该方法的原型测试($ UID,美元,然后分)我知道它需要从_get美元 复制代码代码如下所示: 美元美元'uid_get UID = {…