Greenplum中exit,return和label的注意事项
来源:互联网 发布:淘宝代购没有中文标签 编辑:程序博客网 时间:2024/05/29 09:45
Greenplum中exit和return的注意事项
1. 先来看exit
可以看到当count为6时,直接跳出begin...end语句块,begin...end剩下的语句都不执行,但是并没有跳出loop循环。
2. 下面我们来看一下return语句
我们可以看到,改成return后,当count为6时,退出整个函数。
3. 通过使用label控制循环
可以看出使用label可以灵活控制循环的阶段,当初count为6时,直接跳转到loop循环外。
1. 先来看exit
CREATE OR REPLACE FUNCTION test_exit()RETURNS integer AS$$DECLARE count int;BEGIN count := 1; LOOP count := count + 1; begin raise notice '<<<begin start>>> xact: %', count; EXECUTE 'select pg_sleep(1)'; IF count > 5 THEN EXIT; --这里使用EXIT只会跳出了begin, 而不会跳出LOOP循环 END IF; raise notice '<<<begin end>>> not exit xact: %', count; end; raise notice '<<<loop>>> xact: %', count; raise notice '=================================='; END LOOP; return 1;END$$ LANGUAGE plpgsql;zhangyun_db=> select test_exit();NOTICE: <<<begin start>>> xact: 2NOTICE: <<<begin end>>> not exit xact: 2NOTICE: <<<loop>>> xact: 2NOTICE: ==================================NOTICE: <<<begin start>>> xact: 3NOTICE: <<<begin end>>> not exit xact: 3NOTICE: <<<loop>>> xact: 3NOTICE: ==================================NOTICE: <<<begin start>>> xact: 4NOTICE: <<<begin end>>> not exit xact: 4NOTICE: <<<loop>>> xact: 4NOTICE: ==================================NOTICE: <<<begin start>>> xact: 5NOTICE: <<<begin end>>> not exit xact: 5NOTICE: <<<loop>>> xact: 5NOTICE: ==================================NOTICE: <<<begin start>>> xact: 6NOTICE: <<<loop>>> xact: 6NOTICE: ==================================NOTICE: <<<begin start>>> xact: 7NOTICE: <<<loop>>> xact: 7NOTICE: ==================================................... 一直执行,此处省略
可以看到当count为6时,直接跳出begin...end语句块,begin...end剩下的语句都不执行,但是并没有跳出loop循环。
2. 下面我们来看一下return语句
CREATE OR REPLACE FUNCTION test_return()RETURNS integer AS$$DECLARE count int;BEGIN count := 1; LOOP count := count + 1; begin raise notice '<<<begin start>>> xact: %', count; EXECUTE 'select pg_sleep(1)'; IF count > 5 THEN return 0; END IF; raise notice '<<<begin end>>> not exit xact: %', count; end; raise notice '<<<loop>>> xact: %', count; raise notice '=================================='; END LOOP; return 1;END$$ LANGUAGE plpgsql;
我们可以看到,改成return后,当count为6时,退出整个函数。
3. 通过使用label控制循环
CREATE OR REPLACE FUNCTION test_label()RETURNS integer AS$$DECLARE count int;BEGIN count := 1; <<loop1>> LOOP count := count + 1; <<label>> begin EXECUTE 'select pg_sleep(1)'; raise notice '<<<begin start>>> xact: %', count; exit loop1 when count > 5 ; raise notice '<<<begin end>>> not exit xact: %', count; end label; raise notice '<<<loop>>> xact: %', count; raise notice '=================================='; END LOOP loop1; return 1;END$$ LANGUAGE plpgsql;<pre name="code" class="sql">zhangyun_db=> select test_return();NOTICE: <<<begin start>>> xact: 2NOTICE: <<<begin end>>> not exit xact: 2NOTICE: <<<loop>>> xact: 2NOTICE: ==================================NOTICE: <<<begin start>>> xact: 3NOTICE: <<<begin end>>> not exit xact: 3NOTICE: <<<loop>>> xact: 3NOTICE: ==================================NOTICE: <<<begin start>>> xact: 4NOTICE: <<<begin end>>> not exit xact: 4NOTICE: <<<loop>>> xact: 4NOTICE: ==================================NOTICE: <<<begin start>>> xact: 5NOTICE: <<<begin end>>> not exit xact: 5NOTICE: <<<loop>>> xact: 5NOTICE: ==================================NOTICE: <<<begin start>>> xact: 6 test_return ------------- 0(1 row)zhangyun_db=>
可以看出使用label可以灵活控制循环的阶段,当初count为6时,直接跳转到loop循环外。
0 0
- Greenplum中exit,return和label的注意事项
- Oracle 中Return 和exit的区别
- c中exit和return的区别
- php中return和exit的区别
- Exit() 和 Return() 的区别
- exit()和return()的区别
- return和exit的区别
- return和 exit的区别
- exit()和return()的区别
- exit和return的区别
- return和exit的区别
- exit()和return的区别
- exit和return的区别
- return 和 exit 的区别
- return和exit的区别
- exit和return的区别
- exit()和return的区别:
- exit和return的区别
- iOS9 HTTP 不能正常使用的解决办法
- 补专题列表
- 键盘 点击别处隐藏键盘
- JAVA WEB关于文件开发相关问题
- 为何log4j.properties不用手动加载
- Greenplum中exit,return和label的注意事项
- 嵌入式系统通用驱动程序接口及其实现-I2C主机设备驱动(视频教学时的同步输入文件)
- 抓包工具Fidder详解(主要来抓取Android中app的请求)
- 第28课 Spark天堂之门解密
- 单总线和多总线的区别
- VS2005编译器自定义宏__FILE__,__LINE__,__TIME__
- 添加ES6的支持
- C++函数返回引用的情况说明
- Java基础知识