在PL/pgSQL中模拟GOTO语句的实现
发布时间:2020-12-13 17:06:08 所属栏目:百科 来源:网络整理
导读:PostgreSQL 的 PL/pgSQL并不支持 GOTO 跳转,但某些时候 GOTO 确实能给我们带来便利,伪代码: i = 0;label: goto_label i = i + 1 if (i 100) goto goto_label 这种情况我们可以这样模拟: i = 0;goto_labelLOOP i = i + 1; IF i 100 THEN CONTINUE goto_la
PostgreSQL 的 PL/pgSQL并不支持 GOTO 跳转,但某些时候 GOTO 确实能给我们带来便利,伪代码: i = 0; label: goto_label i = i + 1 if (i < 100) goto goto_label 这种情况我们可以这样模拟: i = 0; <<goto_label>> 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; <<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; 更复杂逻辑请自行想象,此方法并不能实现所有 GOTO 语句适用的场景。 随着跳转次数的增加,这个方法极有可能会让读代码的人骂娘,慎用。 ---------------------------------------------------------- 神州飞象(北京)数据科技有限公司 我们的力量源自最先进的开源数据库PostgreSQL zongliang.quan@postgresdata.com (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |