本文整理自网络,侵删。
目录
- 1 条件语句
- 1.1 elsif可以写多个
- 1.2 LOOP 循环
- 2 WHILE 循环
- 3 FOR 循环
1 条件语句
pgSQL中有两种条件语句分别为if与case语句。
if if 语句形式包含以下几种: IF … THEN … END IF IF … THEN … ELSE … END IF IF … THEN … ELSIF … THEN … ELSE … END IF
示例
示例函数 test_if,将下方示例语句复制到对应位置即可进行测试。
create or replace function test_if(i int) returns void as $$ DECLARE BEGIN -- 替换对应if语句 END; $$ LANGUAGE plpgsql; IF … THEN … END IF 该示例当输入值i大于10时会打印 i的值为:% if i > 10 then raise notice 'i的值为:%', i; end if; IF … THEN … ELSE … END IF
该示例当输入值i大于10时会打印 i的值大于10 否则会打印 i的值小于等于10
if i > 10 then raise notice 'i的值大于10'; else raise notice 'i的值小于等于10'; end if; IF … THEN … ELSIF … THEN … ELSE … END IF
该示例当输入值i大于10时会打印 i的值大于10 ,当输入值为5时会打印 ‘i的值为5’ ,否则会打印 i的值小于等于10
if i > 10 then raise notice 'i的值大于10'; elsif i = 5 then raise notice 'i的值为5'; else raise notice 'i的值小于等于10'; end if;
小提示
关键词ELSIF也可以写成ELSEIF。
1.1 elsif可以写多个
case CASE ... WHEN ... THEN ... ELSE ... END CASE CASE WHEN ... THEN ... ELSE ... END CASE
示例
示例函数 test_case,将下方示例语句复制到对应位置即可进行测试。
create or replace function test_case(i int) returns void as $$ DECLARE BEGIN -- 替换对应case语句 END; $$ LANGUAGE plpgsql; CASE … WHEN … THEN … ELSE … END CASE 该示例当输入值i为1时会打印 i的值为1 ,当输入值为2时会打印 'i的值为2' ,否则会打印 i的值既不为1也不为2 case i when 1,3 then raise notice 'i的值为1'; when 2 then raise notice 'i的值为2'; else raise notice 'i的值既不为1也不为2'; end case;
小提示
如果没有找到匹配,ELSE 语句会被执行
如果ELSE不存在,将会抛出一个CASE_NOT_FOUND异常CASE WHEN … THEN … ELSE … END CASE
case when是基于布尔表达式真假来执行
该示例当输入值i为0-10之间时会打印 i的值在0-10之间 ,当输入值为11-20之间时会打印 i的值在11-20之间’ ,否则会打印 i的值不在0-20之间
CASE WHEN i BETWEEN 0 AND 10 THEN raise notice 'i的值在0-10之间'; WHEN i BETWEEN 11 AND 20 THEN raise notice 'i的值在11-20之间'; else raise notice 'i的值不在0-20之间'; END CASE;
小提示
如果没有找到匹配,ELSE 语句会被执行
如果ELSE不存在,将会抛出一个CASE_NOT_FOUND异常循环语句
1.2 LOOP 循环
[ <> ] LOOP statements END LOOP [ label ];
LOOP定义一个无条件的循环,它会无限重复直到被EXIT或RETURN语句终止。可选的label可以被EXIT和CONTINUE语句用
在嵌套循环中指定这些语句引用的是哪一层循环。
示例
示例函数 test_loop,将下方示例语句复制到对应位置即可进行测试。
create or replace function test_loop(i int) returns int as $$ DECLARE BEGIN -- 替换对应loop语句 END; $$ LANGUAGE plpgsql; exit 退出
该示例首先对i的值加1,如果i的值大于10则退出循环,执行 return 语句返回结果。输入i的值为0时,返回结果11,输入i的值为
20时,返回结果21。
LOOP -- 一些计算 i = i + 1; IF i > 10 THEN EXIT; -- 退出循环 END IF; END LOOP; return i; exit when 退出 该示例与上方示例效果一样。 LOOP -- 一些计算 i = i + 1; EXIT WHEN i > 10; -- 和前一个例子相同的结果 END LOOP; return i; exit [lable]
该示例执行 select test_loop(0) 时输出结果为11,而不是100。当 exit 指定退出标签时,会退出整个块语句继续执行,以下示例退
出 twoblock ,执行 return 语句,所以该值为11;
create or replace function test_loop(i int) returns int as $$ <> DECLARE BEGIN <> DECLARE BEGIN <> DECLARE begin LOOP -- 一些计算 i = i + 1; IF i > 10 THEN EXIT twoblock; -- 退出循环 END IF; END LOOP; END; i = 100; END; return i; END; $$ LANGUAGE plpgsql; continue CONTINUE [ label ] [ WHEN boolean-expression ];
该示例会打印输出i的值,其中当i的值为5时,不会打印。
LOOP i = i + 1; EXIT WHEN i > 10; CONTINUE WHEN i = 5; raise notice 'i的值为:%',i; END LOOP;
相关阅读 >>
python如何解析复杂sql,实现数据库和表的提取的实例剖析
更多相关阅读请进入《sql》频道 >>
数据库系统概念 第6版
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » PgSQL条件语句与循环语句示例代码详解
相关推荐
评论
管理员已关闭评论功能...