博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在PL/pgSQL中模拟GOTO语句的实现
阅读量:7094 次
发布时间:2019-06-28

本文共 961 字,大约阅读时间需要 3 分钟。

  hot3.png

PostgreSQL 的 PL/pgSQL并不支持 GOTO 跳转,但某些时候 GOTO 确实能给我们带来便利,伪代码:

i = 0;label: goto_label  i = i + 1  if (i < 100)    goto goto_label

这种情况我们可以这样模拟:

i = 0;<
>LOOP i = i + 1; IF i < 100 THEN CONTINUE goto_label; END IF; EXIT goto_label;END LOOP;

复杂状况,如果是嵌套式跳转,伪代码:

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

如下:

i = 0;k = 0;<
>LOOP i = i + 1; <
> 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;

更复杂逻辑请自行想象,此方法并不能实现所有 GOTO 语句适用的场景。

随着跳转次数的增加,这个方法极有可能会让读代码的人骂娘,慎用。

 

----------------------------------------------------------

神州飞象(北京)数据科技有限公司
我们的力量源自最先进的开源数据库PostgreSQL
zongliang.quan@postgresdata.com

转载于:https://my.oschina.net/quanzl/blog/680764

你可能感兴趣的文章
网站升级2.0回滚机制
查看>>
centos6.9 网络配置,防火墙,复制虚拟机20180127
查看>>
h3c防火墙的设置过程
查看>>
KMP + 求最小循环节 --- HUST 1010 - The Minimum Length
查看>>
<从优秀到卓越>读书笔记
查看>>
Python3 序列解包
查看>>
C/C++ —语言判断数字或字符的函数总结
查看>>
ParentalControl-SteadyState
查看>>
设计模式 — 结构型模式 适配器模式
查看>>
Tempter of the Bone------剪枝
查看>>
Java学习笔记---IO操作
查看>>
数据库对象
查看>>
Codeforces Round #286 (Div. 1) 解题报告
查看>>
jQuery代码优化:基本事件
查看>>
浅析Java中的23种设计模式
查看>>
python-常用模块
查看>>
4. Locating Elements
查看>>
a href=#与 a href=javascript:void(0) 的区别
查看>>
pr去logo
查看>>
表单重复提交问题
查看>>