postgreSQL学习记录之raise用法

raise用于函数中打印输出,类似于oracle的dbms_output.putline();
raise的语法为:raise notice 'this is raise test %',param;
上面语句中的%为参数占位符,有多个参数时就添加多个%,不用考虑参数的数值类型;notice字段为级别,可以为debug/log/info/notice/warning/exception,这些级别的信息是直接写到服务端日志还是返回到客户端或是二者皆有,是由log_min_messages和client_min_messages两个参数控制,这两个参数在数据库初始化时用到。


下面将创建函数来演示raise的日常使用:

create or replace function raise_demo() returns text language plpgsql as $$
declare 
param1 text:= 'one';
param2 text:= 'two';
begin 
raise notice 'this is raise demo , param1 is % ,param2 is %',param1,param2;
return param1;
end;
$$;
函数创建成功后,在查询窗口中执行select raise_demo();将会在输出窗口的历史区域看到如下信息:
-- 执行查询:
select raise_demo();
注意:  this is raise demo , param1 is one ,param2 is two
### PostgreSQL中的循环结构 在PostgreSQL中,支持多种类型的循环结构来处理复杂的逻辑操作。这些循环可以在存储过程、函数以及匿名代码块内使用。 #### LOOP语句 最简单的形式是`LOOP...END LOOP`结构,在这种情况下,循环会一直执行直到遇到`EXIT`命令为止[^1]: ```sql DO $$ BEGIN <<outer_loop>> LOOP EXIT outer_loop WHEN some_condition; -- 循环体内的其他SQL语句 END LOOP; END $$; ``` #### WHILE循环 当需要基于某个条件来进行重复操作时,则可以采用`WHILE`循环。只要指定的布尔表达式的值为真,就会继续迭代: ```sql DO $$ DECLARE counter integer := 0; BEGIN WHILE counter < 5 LOOP RAISE NOTICE '%', counter; counter := counter + 1; END LOOP; END $$; ``` #### FOR循环 对于已知次数的操作来说,`FOR`循环是最方便的选择之一。它允许遍历整数范围或是查询结果集中的每一行记录: ##### 整数序列上的FOR循环 通过定义起始值和结束值之间的步长来自动生成一系列数值: ```sql DO $$ BEGIN FOR i IN 1..3 BY 1 LOOP RAISE NOTICE 'i is %', i; END LOOP; END $$; ``` ##### 查询结果上的FOR循环 可以直接在一个SELECT语句上应用FOR循环从而逐行访问返回的数据集合: ```sql DO $$ BEGIN FOR record IN SELECT id, name FROM employees LOOP RAISE NOTICE 'Employee ID: % Name: %', record.id, record.name; END LOOP; END $$; ``` 以上就是在PostgreSQL里实现不同种类循环的方法概述。每种方式都有其特定的应用场景,可以根据实际需求灵活选用合适的控制流机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值