返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >PgSQL条件语句与循环语句示例代码详解
  • 860
分享到

PgSQL条件语句与循环语句示例代码详解

2024-04-02 19:04:59 860人浏览 独家记忆
摘要

目录1 条件语句1.1 elsif可以写多个1.2 LOOP 循环2 WHILE 循环3 FOR 循环1 条件语句 pgsql中有两种条件语句分别为if与case语句。 if if

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;

在这里插入图片描述

小提示
CONTINUE可以被用在所有类型的循环中,它并不限于在LOOP中使用。

2 WHILE 循环

[ <> ] WHILE boolean-expression LOOP
statements
END LOOP [ label ];
示例
示例函数 test_,将下方示例语句复制到对应位置即可进行测试,下方所有循环都可以使用此函数测试。
create or replace function test_(i int) returns int as $$
DECLARE
BEGIN
-- 替换对应循环语句
END;
$$ LANGUAGE plpgsql;
该示例输入值为0,判断i的值是否小于10,小于10则执行+1,否则 return 。
WHILE i < 10 LOOP
i = i + 1;
END LOOP;
return i;

3 FOR 循环

这种形式的FOR会创建一个在一个整数范围上迭代的循环。变量name会自动定义为类型integer并且只在循环内存在(任何该
变量名的现有定义在此循环内都将被忽略)。给出范围上下界的两个表达式在进入循环的时候计算一次。如果没有指定BY子
句,迭代步长为 1,否则步长是BY中指定的值,该值也只在循环进入时计算一次。如果指定了REVERSE,那么在每次迭代后
步长值会被减除而不是增加。

[ <> ] FOR name IN [ REVERSE ] expression .. expression [ BY expression ] LOOP
statements
END LOOP [ label ];

示例

FOR i IN 1..10 LOOP
-- 我在循环中将取值 1,2,3,4,5,6,7,8,9,10
END LOOP;
FOR i IN REVERSE 10..1 LOOP
-- 我在循环中将取值 10,9,8,7,6,5,4,3,2,1
END LOOP;
FOR i IN REVERSE 10..1 BY 2 LOOP
-- 我在循环中将取值 10,8,6,4,2
END LOOP;
查询结果循环(FOR…IN… )
FOR…IN

通过一个查询的结果进行迭代并且操纵相应的数据。语法是:

[ <> ] FOR target IN query LOOP
statements
END LOOP [ label ];

target是一个记录变量、行变量或者逗号分隔的标量变量列表。target被连续不断被赋予来自query的每一行,并且循环体将为
每一行执行一次。下面是一个例子:

create or replace function test_for_in() returns int as $$
DECLARE
cddm record;
BEGIN
RAISE NOTICE 'reading jcb_cddm...';
FOR cddm IN SELECT * FROM jcb_cddm limit 5 LOOP
RAISE NOTICE '场地代码为:%,场地名称为 %', cddm.dm, quote_ident(cddm.mc);
END LOOP;
return 1;
END;
$$ LANGUAGE plpgsql;

在这里插入图片描述

FOR…IN…EXECUTE
FOR-IN-EXECUTE语句是在行上迭代的另一种方式,示例如下:
该示例将代码作为参数传入,使用using动态替换。

create or replace function test_for_in(dm varchar) returns int as $$
DECLARE
cddm record;
BEGIN
RAISE NOTICE 'reading jcb_cddm...';
FOR cddm IN execute 'SELECT * FROM jcb_cddm where dm = $1 limit 5' using dm LOOP
RAISE NOTICE '场地代码为:%,场地名称为 %', cddm.dm, quote_ident(cddm.mc);
END LOOP;
return 1;
END;
$$ LANGUAGE plpgsql;
数组循环(FOREACH )
FOREACH语法结构如下:
[ <> ] FOREACH target [ SLICE number ] IN ARRAY expression LOOP
statements
END LOOP [ label ];

示例
不使用slice
该示例使用 select test_sum(array[1,2,3]) 语句测试会返回和为 6

CREATE FUNCTION test_sum(int[]) RETURNS int8 AS $$
DECLARE
s int8 := 0;
x int;
BEGIN
FOREACH x IN ARRAY $1
LOOP
s := s + x;
END LOOP;
RETURN s;
END;
$$ LANGUAGE plpgsql;

slice示例
通过一个正SLICE值,FOREACH通过数组的切片而不是单一元素迭代。SLICE值必须是一个不大于数组维度数的整数常
量。 target 变量必须是一个数组,并且它接收数组值的连续切片,其中每一个切片都有SLICE指定的维度数。这里是一个通过一
维切片迭代的例子:

CREATE FUNCTION scan_rows(int[]) RETURNS void AS $$
DECLARE
x int[];
BEGIN
FOREACH x SLICE 1 IN ARRAY $1
LOOP
RAISE NOTICE 'row = %', x;
END LOOP;
END;
$$ LANGUAGE plpgsql;

在这里插入图片描述

到此这篇关于PgSQL条件语句与循环语句的文章就介绍到这了,更多相关PgSQL条件语句与循环语句内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: PgSQL条件语句与循环语句示例代码详解

本文链接: https://lsjlt.com/news/153958.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • PgSQL条件语句与循环语句示例代码详解
    目录1 条件语句1.1 elsif可以写多个1.2 LOOP 循环2 WHILE 循环3 FOR 循环1 条件语句 pgSQL中有两种条件语句分别为if与case语句。 if if ...
    99+
    2024-04-02
  • 【Python3】条件语句与循环语句
    1 条件语句 例1: if 条件: ... else: ... 应用 #!/usr/bin/env python # -*- coding: utf-8 -*- # Author:Chuncheng.Fan <xmz...
    99+
    2023-01-31
    语句 条件
  • Python条件语句与循环语句
    目录1、条件语句1.1 if语句2、嵌套的分支语句3、案例练习4、循环语句4.1 for-in循环 4.2 range()函数4.3 实例1:计算1-100的和4.4 实例2:计算1...
    99+
    2024-04-02
  • python 条件语句、循环语句
    *条件语句:    流控制语句-分支结构:    语法:     1.简单条件语句: if 条件:语句     2. if 条件:         语句1;       else:          语句2      3 if   条件: ...
    99+
    2023-01-31
    语句 条件 python
  • Python 条件,循环语句详解
    目录1、Python 条件语句1.1 pass语句2、Python for 循环语句2.1 for 嵌套循环3、Python while 循环语句3.1 while 循环嵌套4、br...
    99+
    2024-04-02
  • Awk条件语句和循环语句的示例分析
    这篇文章给大家分享的是有关Awk条件语句和循环语句的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Awk是Unix环境下一种非常好的语言,适合于文本处理和报表生成,它还有许多精心设计的特性,允许进行特殊技...
    99+
    2023-06-27
  • Python条件语句与循环
    1、判断与循环python 缩进main:print("Hello")print("Hello world.") if 判断条件: 执行语句 elif 判断条件: 执行语句 else: 执行语句 while 判断条件...
    99+
    2023-01-31
    语句 条件 Python
  • Python中条件语句、循环语句和pass语句的使用示例
    目录一、条件语句1、if……else……语句 1)单分支2)双分支 2、if…&hellip...
    99+
    2024-04-02
  • Python循环语句代码详解
    本篇内容介绍了“Python循环语句代码详解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!.1 while循环循环语句是程序设计中常用的语句...
    99+
    2023-06-15
  • python条件语句和while循环语句
    目录一、条件语句二、​while循环语句​以Python 3.x版本为主 一、条件语句 ​条件语句基本结构​ 0或null为false,其余则为true if 判定条件:语句块......
    99+
    2024-04-02
  • Verilog语言的循环语句示例详解
    目录关键词:while, for, repeat, foreverwhile 循环for 循环repeat 循环forever 循环关键词:while, for, repeat, f...
    99+
    2023-05-15
    Verilog语言循环语句 Verilog 循环
  • Python3中的循环语句示例详解
    目录Python3 循环语句for循环range()函数break和continue语句while循环Python3 循环语句 在Python编程中,循环语句是控制程序重复执行的一种...
    99+
    2023-05-16
    Python3 循环语句 Python 循环语句
  • Golang的循环语句和循环控制语句详解
    目录一、循环语句1. 普通循环1)语法2)举例2. 循环嵌套3. range循环二、循环控制语句1.Break-中断(跳出)循环1)中断(跳出)循环2)指定想中断(跳出)的循环(嵌套...
    99+
    2024-04-02
  • python条件语句和while循环语句怎么用
    这篇文章主要介绍“python条件语句和while循环语句怎么用”,在日常操作中,相信很多人在python条件语句和while循环语句怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python条件语句和...
    99+
    2023-06-30
  • Python循环语句代码详解:while、for、break
    目录 1 while循环   1 while循环 循环语句是程序设计中常用的语句之一。任何编程语言都有while循环,Python也不例外。while循环的格式如下所示。  while(表达式):       …   else: ...
    99+
    2023-09-20
    python 开发语言
  • Python中的条件判断语句与循环语句用法小结
    if语句 >>通用格式 if语句一般形式如下: if <test1>: <statements1> elif <test2>: <stateme...
    99+
    2022-06-04
    语句 小结 条件
  • python里的条件语句和循环语句你了解多少
    目录前言一、条件语句1、什么是条件语句2、if 语句的基本形式3、if 语句多个判断条件的形式4、if 语句多个条件同时判断5、if 嵌套二、循环语句1、什么是循环语句2、 for ...
    99+
    2024-04-02
  • C#中怎么使用条件语句和循环语句
    在C#中,条件语句一般使用if语句来实现,循环语句一般使用for循环、while循环、do-while循环等来实现。以下是一些示例:...
    99+
    2024-03-06
    C#
  • Go语言中循环语句使用的示例详解
    目录一、概述1. 循环控制语句2. 无限循环二、Go 语言 for 循环1. 语法2. for语句执行过程3. 示例4. For-each range 循环三、循环嵌套1. 语法2....
    99+
    2024-04-02
  • #7 Python顺序、条件、循环语句
    前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一、顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编写程序即可,例如: 1 name =...
    99+
    2023-01-30
    语句 顺序 条件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作