MySql 过程 GOTO 语句
Posted
技术标签:
【中文标题】MySql 过程 GOTO 语句【英文标题】:MySql Procedure GOTO Statement 【发布时间】:2015-05-19 07:35:40 【问题描述】:我想在 mysql 存储过程中使用 goto 语句,只要条件再次变为真,我就会执行我的游标。
这只是一个示例代码,我只是在寻找 goto 语句
BLOCK_BACKLOG:begin
declare backlgId, oldCOR, oldATR,oldCourse,oldATR,isFormFilled,nextParentId int;
declare backlogNoMoreRow boolean default false;
Label : TestLineStart
declare backlogCur cursor for select bcklg.id,cor.id,atr.id,cr.id,atr.obtainedMarks,atr.isFormFilled,atr.parentRegistration_id
from train bcklg,bus cor,fliet atr,fair co,distance cr
where bcklg.courseofferingregistration_id=cor.id and cor.academictermregistration_id=atr.id and cor.courseoffering_id=co.id and co.course_id=cr.id
and bcklg.isDeleted is false and atr.id=parentId;
declare continue handler for not found set backlogNoMoreRow=true;
open backlogCur;
LOOP_BACKLOG: loop
fetch backlogCur into backlgId, oldCOR, oldATR,oldCourse,oldATRMarks,isFormFilled,nextParentId;
if backlogNoMoreRow then
close backlogCur;
leave LOOP_BACKLOG;
end if;
if isFormFilled==0 then
parentId=nextParentId;
GOTO TestLineStart;
end if;
【问题讨论】:
可能重复***.com/questions/11134300/… 是的,可能会重复,但我想知道当条件变为真时是否可以再执行一次 courser。如果 goto 在 mysql 中不起作用,那么次要方式是什么 【参考方案1】:您可以根据变量isFormFilled
的值在外部块上使用LOOP
。
跟随变化可能会对您有所帮助。
-- Label : TestLineStart
TestLineStart: LOOP
-- other part of your SP as it is
并进行以下更改:
if isFormFilled==0 then
parentId=nextParentId;
-- GOTO TestLineStart;
else
leave TestLineStart;
end if;
您必须正确关闭所有loop
语句。
【讨论】:
以上是关于MySql 过程 GOTO 语句的主要内容,如果未能解决你的问题,请参考以下文章