前端之家收集整理的这篇文章主要介绍了
在PL/pgSQL中模拟GOTO语句的实现,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
301_0@Postgre
sql 的 PL/pg
sql并
不支持 GOTO
跳转,但某些时候 GOTO 确实能给我们带来便利,伪
代码:
i = 0;
label: goto_label
i = i + 1
if (i < 100)
goto goto_label
@H_
301_0@这种情况我们可以这样模拟:
i = 0;
<<goto_label>>
LOOP
i = i + 1;
IF i < 100 THEN
CONTINUE goto_label;
END IF;
EXIT goto_label;
END LOOP;
@H_
301_0@复杂状况,如果是嵌套式
跳转,伪
代码:
i = 0;
k = 0;
label: goto_label_i
i = i + 1
label: goto_label_k
k = k + 1
if (k < i)
goto goto_label_k
if (i < 100)
goto goto_label_i
@H_
301_0@如下:
i = 0;
k = 0;
<<goto_label_i>>
LOOP
i = i + 1;
<<goto_label_k>>
LOOP
k = k + 1;
IF k < i THEN
CONTINUE goto_label_k;
END IF;
EXIT goto_label_k;
END LOOP goto_label_k;
IF i < 100 THEN
CONTINUE goto_label_i;
END IF;
EXIT goto_label_i;
END LOOP goto_label_i;
@H_
301_0@更复杂逻辑请自行想象,此
方法并不能实现所有 GOTO 语句适用的场景。
@H_
301_0@随着
跳转次数的
增加,这个
方法极有可能会让读
代码的人骂娘,慎用。
@H_
301_0@---------------------------------------------------------- 神州飞象(北京)数据科技有限公司 我们的力量源自最先进的开源
数据库Postgre
sql zongliang.quan@postgresdata.com